龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Sql Server开发 >

动态查询,动态生成cursor或者动态执行SQL的DML操作

时间:2013-01-03 18:08来源:未知 作者:admin 点击:
分享到:
定义PROCEDUREP1( P_Asset_Type IN varchar2,P_Asset_SubType IN varchar2,P_OrderIds IN varchar2)。 需要根据传入参数动态查询,动态生成cursor或者动态执行SQL的DML操作。 1.简单的查询 SELECTABC from TableAwhere OR

定义PROCEDURE P1 ( P_Asset_Type IN varchar2,P_Asset_SubType IN varchar2,P_OrderIds IN varchar2)。

需要根据传入参数动态查询,动态生成cursor或者动态执行SQL的DML操作。

1.简单的查询

SELECT   ABC from TableA where ORDER_ID IN ( P_OrderIds) ;

2. 动态生成cursor

定义游标和变量:

type   v_cursor   is   ref   cursor;  
C1 v_cursor;    v_command varchar2(2000);

v_command := ''SELECT    ABC from TableA  where ORDER_ID IN ( '' ||P_OrderIds|| '' ) '';

OPEN C1 for v_command;

3.动态DML操作

 v_command2 := ''UPDATE TableA  
               SET ASSET_TYPE_CD = ''''''||P_Asset_Type||'''''',''
                ||''ASSET_SUBTYPE_CD = ''''''||P_Asset_SubType||''''''''
                ||''WHERE ORDER_ID IN ( ''||P_OrderIds||'' ) '';


execute immediate v_command2;(动态sql)

 


精彩图集

赞助商链接