在存储过程里面执行 这句话
SELECT * FROM DATA_S3940 WHERE PID=P_PID AND OUTSIDEID=P_OUTSIDEID AND INSIDEID=P_INSIDEID;
是可以 正常运行
其中 PID OUTSIDEID INSIDEID 为IN参数但是我这样
SELECT * FROM DATA_S||P_CID WHERE PID=P_PID AND OUTSIDEID=P_OUTSIDEID AND INSIDEID=P_INSIDEID;P_CID 也为IN参数
他就报错 错误提示为 命令未正确结束。有什么方法可以快速解决
声明一点: 这样的定义一个字符串的方式是可以解决这问题的,但是我想知道有没有其他的方法来解决这个问题,
str varchar(100) := 'SELECT * FROM DATA_S' || P_CID || ' WHERE PID=:P_PID AND OUTSIDEID=:P_OUTSIDEID AND INSIDEID=:P_INSIDEID';
execute immediate str using PID,OUTSIDEID,INSIDEID; 因为我存储过程里面有很多SQL的语句 ,我不想把所有的SQL都用字符串拼接在一个个调用,谢谢大家,很急。
SELECT * FROM DATA_S3940 WHERE PID=P_PID AND OUTSIDEID=P_OUTSIDEID AND INSIDEID=P_INSIDEID;
是可以 正常运行
其中 PID OUTSIDEID INSIDEID 为IN参数但是我这样
SELECT * FROM DATA_S||P_CID WHERE PID=P_PID AND OUTSIDEID=P_OUTSIDEID AND INSIDEID=P_INSIDEID;P_CID 也为IN参数
他就报错 错误提示为 命令未正确结束。有什么方法可以快速解决
声明一点: 这样的定义一个字符串的方式是可以解决这问题的,但是我想知道有没有其他的方法来解决这个问题,
str varchar(100) := 'SELECT * FROM DATA_S' || P_CID || ' WHERE PID=:P_PID AND OUTSIDEID=:P_OUTSIDEID AND INSIDEID=:P_INSIDEID';
execute immediate str using PID,OUTSIDEID,INSIDEID; 因为我存储过程里面有很多SQL的语句 ,我不想把所有的SQL都用字符串拼接在一个个调用,谢谢大家,很急。
这个是静态语句 from 后面是表明
||是连接字符串的,如'111'||'aaa' 得'111aaa'