关于存储过程 使用变量拼接SQL语句

DECLARE
V_ID NUMBER :=2 ;
V_SQL VARCHAR2(2000);
V_SQL_TEXT VARCHAR2(2000);
BEGIN
SELECT SQL_TEXT INTO V_SQL_TEXT FROM BI_TEST WHERE ID =8;
V_SQL :='INSERT INTO BI_VALUE (ID,K_VALUE) '|| V_SQL_TEXT;
EXECUTE IMMEDIATE V_SQL;
END;

img

从BI_TEST表中查询出的SQL_TEXT的SQL语句中,想用到 V_ID 这个变量,上面的内容,或者这条SQL语句该怎么改?

可以使用替换

-- BI_TEST表中的SQL
INSERT INTO BI_TEST VALUES (8,'SELECT {vId} V_ID,15 K_VALUE FROM DUAL')
-- 存储过程中进行变量替换
V_SQL :='INSERT INTO BI_VALUE (ID,K_VALUE) '|| REPLACE('V_SQL_TEXT', '{vId}' ,V_ID);