比如mssql里可以这么写
exec('exec' + v_sp_name + ' ' + v_sp_p1)
v_sp_name是存储过程名,v_sp_p1是参数名但是oracle里好像不能直接exec
exec('exec' + v_sp_name + ' ' + v_sp_p1)
v_sp_name是存储过程名,v_sp_p1是参数名但是oracle里好像不能直接exec
解决方案 »
- oracle中字段设置
- 继续请教++++++++++++++
- 进入oracle9i企业管理器(oracle enterprise manager console),打开本地数据库连接时,提示'关闭的连接'
- 有谁知道在哪里能下载到OCCI
- 如何让无sysdba角色的普通用户采用OS验证登录数据库(即不输入密码的情况下)
- 如果日期格式是dd-Mon-yyyy,应该怎么写日期呢?
- 程序语言开发中 怎么取得oracle的数据操作错误 ?
- 如何判断某个表中是否存在某个字段?
- 将Access数据库链接Oracle的问题
- TRIGER RAISE /CATCH 問題
- 怎么用才能使ORACLE数据库中的游标循环多次?
- execute immediate语句小错误,进来看看吧
2 begin
3 dbms_output.put_line('Procedure is executed!');
4 end;
5 /过程已创建。
SQL> create or replace procedure p_1(v_pname varchar2) as
2
3 begin
4 execute immediate '
5 begin
6 '||v_pname||';'
7 ||' end;';
8 end;
9 /过程已创建。SQL> exec p_1('p_temp');
Procedure is executed!PL/SQL 过程已成功完成。SQL>
SQL> create or replace procedure p_1(v_pname varchar2) as
2
3 begin
4 execute immediate v_pname;
5 end;
6 /过程已创建。SQL> exec p_1('p_temp');
BEGIN p_1('p_temp'); END;*
ERROR 位于第 1 行:
ORA-00900: 无效 SQL 语句
ORA-06512: 在"SCOTT.P_1", line 4
ORA-06512: 在line 1
SQL>
v_sql varchar2;
begin
v_sql:='你要用的存储过程名及参数';
dbms_output.put_line(v_sql);
exectude immediate v_sql;
end v_temp;
retstr varchar2(100);
begin
execute immediate ' begin '||v_pname||'('||retstr||'); end;';
dbms_output.put_line(retstr);
end;
/
execute immediate 'begin proc_name(:para1,:para2) end;' using
para1 in para1_value,para2 out para2_value;
其中:para1是输入变量,para2是输出变量
exec :var||(parm);
--如果保存过程名的变量为var:
:var||(parm);