我估计你的memo字段是字符型,并且插入memo字段的内容包含了空格。对于char或varchar2之类的,需要在两侧再加单引号,改为这样试试:vsql:='insert into com_sql(id,memo) values('||Vid||','''||Vmemo||''')'; 如果id也是字符型的,做相应修改。
SQL> ed 已写入 file afiedt.buf 1 declare 2 vid number; 3 vmemo varchar2(20); 4 vSql varchar2(100); 5 begin 6 vid :=10; 7 vmemo :='dddd'; 8 vsql := ' insert into test_02(id,name) values('||vid||','''||vmemo||''')'; 9 dbms_output.put_line(vsql); 10 execute immediate vsql; 11* end; SQL> / insert into test_02(id,name) values(10,'dddd')PL/SQL 过程已成功完成。SQL> commit;提交完成。SQL> select * from test_02; ID NAME ---------- -------------------- 1 B2d2333 2 Bdsdf232 3 A1asdflksa 4 ab>?ddd 5 我是????? 6 你是?达到 10 dddd已选择7行。
已写入 file afiedt.buf 1 declare
2 vid number;
3 vmemo varchar2(20);
4 vSql varchar2(100);
5 begin
6 vid :=10;
7 vmemo :='dddd';
8 vsql := ' insert into test_02(id,name) values('||vid||','''||vmemo||''')';
9 dbms_output.put_line(vsql);
10 execute immediate vsql;
11* end;
SQL> /
insert into test_02(id,name) values(10,'dddd')PL/SQL 过程已成功完成。SQL> commit;提交完成。SQL> select * from test_02; ID NAME
---------- --------------------
1 B2d2333
2 Bdsdf232
3 A1asdflksa
4 ab>?ddd
5 我是?????
6 你是?达到
10 dddd已选择7行。