在SQL语句中使用函数的限制及过程与函数的区别
2012-04-09 10:19
489 查看
²必须是存储函数,存储过程不能在SQL语句中调用。
²参数的类型只能是IN。
²参数和返回值的数据类型都必须是SQL支持的数据类型,而不能是PL/SQL中特定的数据类型,如BOOLEAN、RECORD、TABLE。
²不能用于CREATE或者ALTER TABLE命令中的CHECK约束或者字段的缺省值定义。
²必须有执行函数的权限。
²在SQL语句(SELECT、UPDATE、DELETE)中调用的函数不能包含DML语句。
²在DML语句(UPDATE、DELETE)中调用的函数不能查询在DML中使用的表。
²在SQL语句中调用的函数不能含有终结事务(transaction)的语句,如COMMIT。
函数中不能调用违反上述限制的子程序。
CREATE OR REPLACE FUNCTION dml_call_sql (p_sal NUMBER)
RETURN NUMBER
IS
BEGIN
INSERT INTO emp (empno, ename, hiredate, job_id, salary)
VALUES(1, 'employee 1', SYSDATE, 'SALESMAN', 1000);
RETURN (p_sal + 100);
END;
/
UPDATE emp SET sal = dml_call_sql(2000)
WHERE empno =170;
错误!
过程与函数的区别
²参数的类型只能是IN。
²参数和返回值的数据类型都必须是SQL支持的数据类型,而不能是PL/SQL中特定的数据类型,如BOOLEAN、RECORD、TABLE。
²不能用于CREATE或者ALTER TABLE命令中的CHECK约束或者字段的缺省值定义。
²必须有执行函数的权限。
²在SQL语句(SELECT、UPDATE、DELETE)中调用的函数不能包含DML语句。
²在DML语句(UPDATE、DELETE)中调用的函数不能查询在DML中使用的表。
²在SQL语句中调用的函数不能含有终结事务(transaction)的语句,如COMMIT。
函数中不能调用违反上述限制的子程序。
CREATE OR REPLACE FUNCTION dml_call_sql (p_sal NUMBER)
RETURN NUMBER
IS
BEGIN
INSERT INTO emp (empno, ename, hiredate, job_id, salary)
VALUES(1, 'employee 1', SYSDATE, 'SALESMAN', 1000);
RETURN (p_sal + 100);
END;
/
UPDATE emp SET sal = dml_call_sql(2000)
WHERE empno =170;
错误!
过程与函数的区别
相关文章推荐
- 存储过程与函数的区别,函数可以嵌入sql语句from中使用,存储过程不行
- 想要在SQL语句中可以使用用户自定义的函数,那么这样的用户定义函数有哪些限制?
- 在sql的函数里面不能使用insert语句,估计update、delete也不行,改为存储过程就行了。
- VBA与T-SQL之间的函数比较;SQL Server的SQL语句如何在ACCESS中使用?(转自http://access911.net)
- 在存储过程里使用OleDB和Sql连接对于参数的区别
- MySQL 的存储过程 procedure 与 函数 function 的区别和使用方法
- Efficient Function Calls From SQL-在SQL语句中更高效的使用函数(转载)
- 用SQL语句查找包含有某个关键字的存储过程、触发器、函数等(仅适用MS SQL SERVER)
- yii框架中findall方法取数据使用总结,包括select各种条件,where条件,order by条件,limit限制以及使用单纯sql语句query时占位符的使用等
- T-SQL 存储过程中使用事务并回滚出错的SQL语句(C#事务处理)
- ado.net EF与ado.net区别比较、在EF中使用执行sql语句
- Oracle 动态SQL语句(4)之存储过程的调用与浅谈字符串的使用
- MS SQL和Access中使用函数的区别
- Oracle开发之SQL语句案例—分析函数的使用
- sql语句中where 1=1和where 1= 0 的使用和区别
- 从已有数据库生成脚本来获得生成数据表、视图、函数、存储过程以及触发器的SQL语句
- PL/SQL--Procedure(过程)和Function(函数)的区别
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- sql语句中开窗函数的使用
- SQL2000系统表、存储过程、函数的功能介绍及应用2009年01月21日 星期三 11:38虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要直接对系统表进行查询。因为SQL