PLSQL语句中将变量的值传递给静态SQL语句做查询条件的问题

本文探讨了在PLSQL中遇到的问题,即如何将变量的值作为静态SQL查询条件。错误示例展示了直接使用局部变量导致的失败,强调了静态SQL语句不支持局部变量,但允许全局变量。解决方案仍在探索中,作者计划在找到答案后分享。
摘要由CSDN通过智能技术生成

静态SQL语句里面禁止插入局部变量(全局变量且初始化后的则可以)

 

错误写法: 


DECLARE
 TABLEFROM VARCHAR2(200):= 'T_CRCHARGER';
 TABLETO VARCHAR2(200):= 'T_MAINLANDSELLCONTRACT';
 CURSOR TESTC1 IS SELECT  A.COLUMN_NAME ,A.DATA_TYPE FROM user_tab_cols A  WHERE TABLE_NAME = TABLEFROM;
 COLNAME user_tab_cols.COLUMN_NAME % TYPE;
 COLTYPE  user_tab_cols.DATA_TYPE %  TYPE;
 COLNAME_B user_tab_cols.COLUMN_NAME % TYPE;
 COLTYPE_B user_tab_cols.DATA_TYPE % TYPE;
 SQLSTR   VARCHAR2(200);
 SQLSTRALL   VARCHAR2(200);
BEGIN
OPEN TESTC1;
    SQLSTR := '';
    LOOP
    FETCH TESTC1 INTO COLNAME,COLTYPE;
    EXIT WHEN TESTC1 % NOTFOUND;
        dbms_output.put_line('新数据:'||COLNAME_B||',新类型:'||COLTYPE_B );
        SELECT A.COLUMN_NAME,A.DATA_TYPE INTO COLNAME_B,COLTYPE_B FROM user_tab_cols A  WHERE TABLE_NAME =  TABLETO AND COLUMN_NAME = TESTC1.COLNAME;
    END LOOP;
CLOSE TESTC1;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值