PL/SQL插入查询中是否允许使用变量?
是否允许对变量使用Insert查询 比如: 插入变量1(col1\u变量名称,col2\u变量名称) 值(变量3、变量4) ?PL/SQL插入查询中是否允许使用变量?,sql,plsql,insertion,Sql,Plsql,Insertion,是否允许对变量使用Insert查询 比如: 插入变量1(col1\u变量名称,col2\u变量名称) 值(变量3、变量4) ? 有关详细信息,表和列名不能作为变量传递给语句。完成您似乎要做的事情的一种方法是将语句构建为字符串,然后动态执行它,如中所示: DECLARE strStmt VARCHAR2(2000); strTable VARCHAR2(30) := 'SOME_TABLE'; strCol1 VARCHAR2(30) := 'COL1'; strCol2
有关详细信息,表和列名不能作为变量传递给语句。完成您似乎要做的事情的一种方法是将语句构建为字符串,然后动态执行它,如中所示:
DECLARE
strStmt VARCHAR2(2000);
strTable VARCHAR2(30) := 'SOME_TABLE';
strCol1 VARCHAR2(30) := 'COL1';
strCol2 VARCHAR2(30) := 'COL2';
strCol3 VARCHAR2(30) := 'COL3';
nVal1 NUMBER := 42;
strVal2 VARCHAR2(30) := 'HELLO';
nVal3 NUMBER := 100;
BEGIN
strStmt := 'INSERT INTO ' || strTable ||
'(' || strCol1 || ',' ||
strCol2 || ',' ||
strCol3 || ')' ||
' VALUES (' ||
nVal1 || ',' ||
'''' || strVal2 || ''',' ||
nVal3 || ')';
EXECUTE IMMEDIATE strStmt;
END;
分享和享受。你能用一个很好的例子解释一下什么是%TYPE吗?你看到语法下面的链接了吗@Batousik谢谢,回答得很好,尽管谷歌的回答速度更快:)现在我有了动态sql查询:)我们正在寻找经过充分研究的问题,并展示了OP作者所做的一些实际工作。
DECLARE
strStmt VARCHAR2(2000);
strTable VARCHAR2(30) := 'SOME_TABLE';
strCol1 VARCHAR2(30) := 'COL1';
strCol2 VARCHAR2(30) := 'COL2';
strCol3 VARCHAR2(30) := 'COL3';
nVal1 NUMBER := 42;
strVal2 VARCHAR2(30) := 'HELLO';
nVal3 NUMBER := 100;
BEGIN
strStmt := 'INSERT INTO ' || strTable ||
'(' || strCol1 || ',' ||
strCol2 || ',' ||
strCol3 || ')' ||
' VALUES (' ||
nVal1 || ',' ||
'''' || strVal2 || ''',' ||
nVal3 || ')';
EXECUTE IMMEDIATE strStmt;
END;