1. 苏葳的备忘录首页
  2. 数据库

PL/SQL函数的调用限制

oracle pl/sql dml 函数PL/SQL中的函数可用在表达式中,我们喜欢用它的原因是因为它的使用方式几乎与其它语言如C中的函数几乎完全一样。而过程则需要象独立语句一样执行,往往需要另外取出它的输出参数来获得结果。比如PL/SQL中的赋值语句可直接使用函数来赋值:kk:=function(parm);也可在sql语句中使用:select function(parm) from dual;而过程则一般需要额外的步骤。但是当function中有DML语句,如下面函数:

FUNCTION getparam(aaa IN NUMBER) RETURN VARCHAR2 IS
  BEGIN
    INSERT INTO test2 (aa) VALUES (aaa);
    RETURN('number1~');
  END;

则用sql方式调用不允许,这或许是因为PL/SQL的纯度限制问题,以后再作深究。有DML语句的情况下,可以表达式方式调用,如:

declare kk varchar2(30);
begin
  --  INSERT INTO test2 (aa) VALUES (22);
  kk:=testpkg.getparam(11);
  dbms_output.put_line('kkkkk:'||kk);
  commit;
end;

以上是在pl developer中的sql窗口中调用,注意后面的commit;语句,由于pl developer默认并不自动提交,所以需加上此语句方可另开窗口查询到表中的插入结果,或执行完这些语句后手工按窗口上的提交按钮提交。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/349.html

发表评论

邮箱地址不会被公开。 必填项已用*标注