Выполнение sql в процедуре с объединенной командной строкой - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть это здесь:

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@

Проблема в том, что он запускается (без сообщения об ошибке), но в таблице ничего нет ....

Есть идеи? Спасибо

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Я думаю, вам нужно изменить тест на '|| test ||'в наборе v_query, как показано ниже:

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@
0 голосов
/ 15 ноября 2018

Похоже, вы не используете отладчик ... попробуйте его в IBM Data Studio (бесплатно скачать ).

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@
...