2010-07-19 3 views
0

Привет Я пытаюсь написать хранимую процедуру в ISeries DB2, но с ошибками.Ошибка в хранимой процедуре

create procedure pakretst.fttest2 
(IN fExpression CHARACTER(10)) 

language sql 

reads sql data 

dynamic result sets 1 

begin 

declare stmt VARCHAR(50); 

declare x cursor for sl; 

If ftExpression IS NOT NULL 

set stmt='select * from pakretst.uwftrtystp WHERE'+ftExpression; 

else 


set stmt='select * from pakretst.uwftrtystp'; 

prepare sl from stmt; 

open x; 

return; 

end 

; 

**** SQL Состоянии: 42618 Vendor Код: -312 Сообщение: [SQL0312] Переменная FTEXPRESSION не определен или не годным к употреблению. Причина. , , , , : Переменная FTEXPRESSION появляется в инструкции SQL, но существует одно из следующих условий: - Объявление переменной не существует. - **

+2

Какая ошибка? – krock

+0

В нем говорится что-то о переменной, которая не найдена, которую я включаю во входную переменную, описание добавлено в исходное сообщение. –

+0

Когда что-то вроде этого не имеет смысла, пусть ваш компьютер поможет. Скопируйте имя переменной из сообщения об ошибке и используйте функцию «Поиск» вашего ПК, чтобы найти ее в исходном тексте. ** Не ** просто старайтесь делать все проверки глазами. Это то, что вам не удалось в этом примере. – user2338816

ответ

1

Я не знаю, если это простая ошибка в транскрипции, но в то, что вы дали здесь, у вас есть

(IN fExpression CHARACTER(10)) 

в списке параметров, но

set stmt='select * from pakretst.uwftrtystp WHERE'+ftExpression; 

в месте использования - fExpression по сравнению с ftExpression ...

+0

спасибо, не могу поверить, что я это сделал. Хотя теперь он вызывает еще одну ошибку, но ее движение вперед. Cheers. –