2015-03-26 2 views
1

Я новичок для создания хранимой процедуры DB2 for IBM i (AS400). Я ищу ответ за то, что не так с моей хранимой процедурой вызова из STRSQL. Все хранимые процедуры параметров «IN» могут быть вызваны, но хранимые процедуры параметра «OUT» - нет.IBM i (AS400) Вызов хранимой процедуры SQL из STRSQL

create procedure egg(out pcount# INT) 
language sql 
set option dbgview=*source, USRPRF=*USER 
begin 
    set pcount# = 5; 
end 

Я называю это,

call egg(?)    

Тогда эта ошибка появляется.

SQL0418 
Message . . . . : Use of parameter marker not valid. 

Я хочу увидеть результат pcount #, '5', в строке. Любая помощь будет оценена по достоинству.

+0

Нужно указать (целевую) переменную в вызове? – jarlh

ответ

1

То, что вы пытаетесь сделать, будет работать, но только если вы используете Run SQL инструмент Сценарии запроса iNav .. В

[ Thu Mar 26 08:50:52 EDT 2015 ] Run Selected 

> call egg(?) 

Return Code = 0 

Output Parameter #1 = 5 

Statement ran successfully (0 ms) 

Другой вариант, если вы на недавнем (7.1+) выпуска, является использование глобальных переменных ..

create or replace variable myout int default(0) 
call egg(myout) 
select myout from sysibm.sysdummy1 

Обратите внимание, что даже в случае использования глобальной переменной, Run SQL Scripts iNav является лучшим выбором, поскольку она имеет вкладки, вы можете открыть для создания, обновления, удаления глобальных переменных напрямую ,

+0

Спасибо за ваш быстрый ответ. Поэтому, я думаю, теперь мой вопрос заключается в том, почему работает параметр Calling 'IN'. – user1806890

+1

Это ограничение STRSQL. –

+0

Как @BuckCalabro говорит, это просто ограничение STRSQL. Я предполагаю, что он не был разработан как инструмент тестирования; просто быстрый и грязный инструмент запросов. Поддержка IN Parms не была большой проблемой; OUT - другое дело. Хуже того, он не показывает никаких возвращенных результатов, установленных из хранимой процедуры. Вы просто получаете сообщение, SQL0466 - 1 набор результатов доступен из процедуры XXXXXX. Поскольку IBM предоставляет более сложные средства запуска SQL-скриптов, они не видят никаких причин для улучшения STRSQL. – Charles

Смежные вопросы