SQL 语句错误分析及修正 - 批量插入数据到 Oracle 表
SQL 语句错误分析及修正 - 批量插入数据到 Oracle 表
原始 SQL 语句:
create table t (id int,text VARCHAR2(100));
DECLARE
BEGIN
FOR i IN 1..1000 LOOP
EXECUTE immediate 'INSERT INTO t VALUES(x,'xrong','nan','20')' USING i;
END LOOP;
COMMIT;
END;
错误分析:
- 在
INSERT INTO t VALUES语句中,x应该被替换成:i,表示传入参数i的值。 '20'应该不需要用引号括起来,因为该列的数据类型是int。- 插入的数据中,第二列和第三列的值没有使用参数,如果该值固定,可以直接写在 SQL 语句中,否则需要在
EXECUTE IMMEDIATE语句中传入参数。 - 在
EXECUTE IMMEDIATE语句中,需要使用USING关键字将参数传入。
修正后的 SQL 语句:
create table t (id int,text VARCHAR2(100));
DECLARE
BEGIN
FOR i IN 1..1000 LOOP
EXECUTE immediate 'INSERT INTO t VALUES(:i, 'xrong', 'nan', 20)' USING i;
END LOOP;
COMMIT;
END;
修改说明:
- 使用
:i作为参数占位符,并使用USING i将参数i传入EXECUTE IMMEDIATE语句。 - 去掉了
'20'的引号,因为该列的数据类型是int。 - 将第二列和第三列的值直接写在了 SQL 语句中,因为它们是固定值。
最终可以正确执行该 SQL 语句,并向表 t 中插入 1000 条数据。
原文地址: https://www.cveoy.top/t/topic/nmEQ 著作权归作者所有。请勿转载和采集!