在SQL语句中使用函数的限制及过程与函数的区别

²必须是存储函数,存储过程不能在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;

错误!




过程与函数的区别


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值