使用串联的命令字符串在过程中执行sql



我这里有这个:

create procedure test_ins(IN tab varchar(128))
Language sql
begin
DECLARE stmt_ins STATEMENT;
DECLARE v_query varchar(2048);
DECLARE test varchar(20);
DECLARE test_tab varchar(20);
set test = 'HERE IT IS';
set test_tab = tab;
set v_query= 'INSERT INTO '||test_tab||'(test, free) values (test,'''')';
PREPARE stmt_ins from v_query;
EXECUTE stmt_ins;
end@

问题是它似乎在运行(没有错误消息(,但表中什么都没有。。。。

有什么想法吗?感谢

我认为您需要将集合v_query中的test更改为'|test||',如下所示:

create procedure test_ins(IN tab varchar(128))
Language sql
begin
DECLARE stmt_ins STATEMENT;
DECLARE v_query varchar(2048);
DECLARE test varchar(20);
DECLARE test_tab varchar(20);
set test = 'HERE IT IS';
set test_tab = tab;
set v_query= 'INSERT INTO '||test_tab||'(test, free) values ( '''||test||''','''')';
PREPARE stmt_ins from v_query;
EXECUTE stmt_ins; 
end@

似乎您没有使用调试器。。。请在IBMDataStudio中试用(免费下载(。

create or replace procedure test_ins(IN tab varchar(128))
Language sql
specific test_ins
begin
DECLARE v_query varchar(2048);
DECLARE test varchar(20);
DECLARE test_tab varchar(20);
DECLARE stmt_ins STATEMENT;
set test = 'HERE IT IS';
set test_tab = tab;
set v_query= 'INSERT INTO '||test_tab||'(test, free) values (''test'','''')';
call dbms_output.put_line(v_query);
PREPARE stmt_ins from v_query;
EXECUTE stmt_ins;
end@

最新更新