我在plsql中或者在sqlplus中,用execute执行存贮过程,例:execute p1('001')
提示说是无效的sql语句。我看过书,也在网上搜索过,执行存贮过程的语句都是这样写的。另外,这些存贮过程本身是绝对没有问题的,因为在程序中用storedprocedure控件就可以执行。那么在plsql中,或者在一个存贮过程中调用另一个存贮过程的语句该怎么写?
提示说是无效的sql语句。我看过书,也在网上搜索过,执行存贮过程的语句都是这样写的。另外,这些存贮过程本身是绝对没有问题的,因为在程序中用storedprocedure控件就可以执行。那么在plsql中,或者在一个存贮过程中调用另一个存贮过程的语句该怎么写?
解决方案 »
- ORA-16535:CRS is preventing execution of a broker operation
- 为何提示我 "权限不足". 可我是 system, scott的用户登陆的呀?
- Oracle 10g包括的几个独立安装的CD都是什么用处?
- oracle9i安装问题
- sql语句如何获取表的父节点?
- SQL 的别名中,遇到的问题!!!!!!!!!!!!!!!!
- 请教一个对于大虾相当简单的查询语句,在线等待!
- 高分求数据库备份方案!!!!
- 重发
- oracle9i在windows server 2000上 在往表中加入汉字时,应用后输入汉字的字段出现乱吗?
- sybase触发器转成oracle~~大家帮忙~~
- WINDOWS的oracle 客户端不能连接linux的oracle服务器
execute p1('001')
end
我写成下面这样:
begin
execute p1('005');
end;
它提示缺少immediate
我边上immediate后
begin
execute immediate p1('005');
end;
它又提示此范围内缺少函数p1,我又在p1前加上用户名,同样提示缺少函数p1
i int;
begin
p1('005');
end;
create or replace procedure sp_test is
begin
dbms_output.put_line( 'hello world' );
end;--测试
declare
i int;
begin
sp_test;
end;
--输出结果
hello world
原来是存贮过程有点问题,过程很简单,如下:
create or replace procedure p1(id in varchar2)
is
begin
update zuser set memo='ok' where userid=id;
end p1;
在execute p1('005')时,提示无效的数字,但当我把update zuser set memo='ok' where userid=id直接写成update zuser set memo='ok' where userid='005'时,就可以成功执行。
不知是什么问题?
create or replace procedure p1(id in varchar2) is
begin
update auto set c = 'ok';
dbms_output.put_line(id);
end p1;
/set serveroutput on;
declareid varchar2(10) := '005';beginp1(id);end;
/结果:
005PL/SQL procedure successfully completed