公司要将网站的数据库从sql server迁移到oracle中,但是在迁移存储过程时发现了问题
原sql server存储过程是:
CREATE OR REPLACE PROCEDURE usr_call_sellClient @sql1 varchar(3000) AS
begin tran
exec(@sql1)
commit tran但是迁移为oracle时不知道怎么弄了???
因为传入的sql语句可能是select语句,也可能是update语句。请问应该怎么改,谢谢!!!!!
原sql server存储过程是:
CREATE OR REPLACE PROCEDURE usr_call_sellClient @sql1 varchar(3000) AS
begin tran
exec(@sql1)
commit tran但是迁移为oracle时不知道怎么弄了???
因为传入的sql语句可能是select语句,也可能是update语句。请问应该怎么改,谢谢!!!!!
解决方案 »
- 64位win7的plsql问题
- 关于sqlplus中set newpage 0打印的两个黑框的作用
- 如何设置主码为时间+字符串,怎么用序列实现啊
- 谁能推荐一些ORACLE ERP原理的书或教程....?
- 高手帮忙,这句SQL该怎么写
- ???菜鸟刚学oracle,现在想重装机器了,我想把我建的一个叫word的数据库保存下来,考的别的机器上,等装完系统再考回来,恢复数据库,
- 我的oracle 数据库突然在网络中客户端oem中无法控制了
- 求sql语句,如何把图片写到oracle数据库中啊。
- 100分:insert的问题
- 学ORACLE的有谁想要QQ吗?
- 求sql语句,group by语句中查询多个字段内容。
- Oracle不使用UTL_FILE操作文本
CREATE OR REPLACE PROCEDURE usr_call_sellClient(mysql IN NVARCHAR2) AS
...
DBMS_SQL.EXECUTE(mysql);
--或者
execute immediate mysql;
...
CREATE OR REPLACE PROCEDURE TEST.YYQPRO(
i_MYSQL IN NVARCHAR2,
o_RTN OUT NUMBER
)
IS --
VSQL VARCHAR2(500);
TEST VARCHAR2(50); CURSOR TESTCUR
IS
SELECT * FROM YYQTEST1; BEGIN
VSQL := i_MYSQL; execute immediate VSQL;
END;/
------------------------------
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
2 TSQL VARCHAR(50);
3 OTN NUMBER;
4 BEGIN
5 TSQL := 'SELECT * FROM YYQTEST1';
6 YYQPRO(TSQL,OTN);
7 DBMS_OUTPUT.PUT_LINE('OK');
8 END;
9 /
OKPL/SQLプロシージャが正常に完了しました。
create or replace package pac_sql
as
procedure p_update(sql varchar2);
procedure p_select(sql varchar2,cur out sys_refcursor);
end;create or replace package pac_sql
as
procedure p_update(sql varchar2)
as
begin
execute immediate sql;
end p_update;
procedure p_select(sql varchar2,cur out sys_refcursor)
as
begin
open cur for sql;
end p_select;
end;CREATE OR REPLACE PROCEDURE usr_call_sellClient (sql1 varchar2)
AS
cur sys_refcursor;
begin
if substr(sql1,1,6)='select' then
pac_sql.p_select(sql1,cur);
.....;
elsif substr(sql1,1,6)='update' then
pac_sql.p_update(sql1);
commit;
end if;
end;