【发布时间】:2014-07-17 07:55:53
【问题描述】:
是否允许使用带变量的插入查询?
喜欢: 插入 var_1 (col1_Var_Name, col2_vAr_Name) 值(var_3,var_4)
?
【问题讨论】:
-
我们正在寻找经过充分研究并展示 OP 作者所做的一些实际工作的问题。
是否允许使用带变量的插入查询?
喜欢: 插入 var_1 (col1_Var_Name, col2_vAr_Name) 值(var_3,var_4)
?
【问题讨论】:
DECLARE
TYPE type_name IS TABLE OF
(column_type |
variable%TYPE |
table.column%TYPE
[NOT NULL]
INDEX BY BINARY INTEGER;
【讨论】:
表名和列名不能作为变量传递给语句。完成您似乎正在尝试做的事情的一种方法是将语句构建为字符串,然后动态执行它,如下所示:
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;
分享和享受。
【讨论】: