我是新手,请教下:
我用PL/SQL建了一个存储过程,编译是没有问题,运行也没问题,存储过程代码如下:
CREATE OR REPLACE PROCEDURE test(
arg1 varchar2:='',
arg2 varchar2:='',
tempvalue OUT integer --返回值
)
。。后省略现在我想在触发器中得到test的返回值,并赋给一个变量nid,我写的代码如下:
nid :=test('tar1','tar2',0);--其中第三个参数,用于返回值,不知道该怎么传值。。如果传0编译的时候报错:
Error: PLS-00222: 在此范围中不存在名为 'test' 的函数请问怎么才能获得存储过程的参数呢?
我的目的就是给test存储过程传2个参数,然后操作数据库得到一个返回值。。
大侠们帮帮忙吧~
我用PL/SQL建了一个存储过程,编译是没有问题,运行也没问题,存储过程代码如下:
CREATE OR REPLACE PROCEDURE test(
arg1 varchar2:='',
arg2 varchar2:='',
tempvalue OUT integer --返回值
)
。。后省略现在我想在触发器中得到test的返回值,并赋给一个变量nid,我写的代码如下:
nid :=test('tar1','tar2',0);--其中第三个参数,用于返回值,不知道该怎么传值。。如果传0编译的时候报错:
Error: PLS-00222: 在此范围中不存在名为 'test' 的函数请问怎么才能获得存储过程的参数呢?
我的目的就是给test存储过程传2个参数,然后操作数据库得到一个返回值。。
大侠们帮帮忙吧~
out_var int;nid :=test('tar1','tar2',out_var);--
2. PLS-00222: 在此范围中不存在名为 'test' 的函数。 关于这点,你的函数和触发器在同一个用户下没?没有的话要另外处理。
比如,test是scott的函数,而触发器在hr下建立的。那么要在scott用户下降test函数的执行权限授予给hr,执行grant execute on test to hr。然后在hr的触发器中调用时加上用户名前缀,如scott.test(..)
out_var int;
begin
test('tar1','tar2',out_var);end;如果是存储过程是这样调用
这样调用之后,我怎么对nid进行操作啊
是传值的问题,传0的时候,不知道为什么报找不到存储过程,按照mg_chen和nGX20080110的方法就可以了,
就是说,把返回值变量传入存储过程!
谢谢大家~
结贴散分~