Ошибка при выполнении запроса динамического выбора внутри хранимой процедуры в IBM DB2 - PullRequest
0 голосов
/ 05 ноября 2018

Что не так с кодом ниже? Я пытаюсь выполнить динамический запрос внутри хранимой процедуры в DB2. Моя процедура создается

CREATE PROCEDURE  get_users( in offsetValue integer,
                              in sortCol varchar(20)            
                            )
  SPECIFIC get_users
  LANGUAGE SQL 

  Re:  BEGIN

    DECLARE SELECT_STATEMENT VARCHAR(8000);
    DECLARE SQL_STATEMENT STATEMENT;

    DECLARE c_emp CURSOR FOR SQL_STATEMENT;

    set SELECT_STATEMENT = 'select * from users;';

    PREPARE SQL_STATEMENT FROM SELECT_STATEMENT;

    EXECUTE SQL_STATEMENT; 

    open c_emp;
  END Re

Но когда я вызываю процедуру, используя

call get_users(3, 'email_id');

Я получаю следующую ошибку

SQL Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;select * from users;END-OF-STATEMENT, DRIVER=4.24.92

Что может быть не так?

1 Ответ

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

Слишком много ошибок ... Попробуйте это:

--#SET TERMINATOR @

CREATE OR REPLACE PROCEDURE  get_users( in offsetValue integer,
                              in sortCol varchar(20)            
                            )
  SPECIFIC get_users
  DYNAMIC RESULT SETS 1
  LANGUAGE SQL 

  Re:  BEGIN
    DECLARE SELECT_STATEMENT VARCHAR(8000);
    DECLARE SQL_STATEMENT STATEMENT;
    DECLARE c_emp CURSOR WITH RETURN FOR SQL_STATEMENT;

    set SELECT_STATEMENT = 'select * from users';
    PREPARE SQL_STATEMENT FROM SELECT_STATEMENT;
    open c_emp;
  END Re
  @
...