欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-03-06 23:07:14
...
定义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)