У меня была хранимая процедура без аргументов, которая была вызвана из сценария UNIX db2 call
, и SP работал нормально, а сценарий также работал нормально.
Новое требование заключается в передаче имени файлак хранимой процедуре и сделать некоторую бизнес-логику - я не могу передать имя файла из UNIX в SP.Я использую IN
параметр Varchar(50)
.
SP скомпилирован нормально и доступен в правильной схеме - я вызвал несколько способов, и ни один из них не работает нормально.
Пожалуйста, помогите мне отладить это.
Хранимая процедура DB2:
CREATE PROCEDURE ABC.sp_Update(IN FILE_NAME VARCHAR(50))
Различные методы, которые я пробовал Вызов хранимого процесса DB2 из сценария UNIX
db2 call "ABC.sp_Update("filename.txt")"
db2 call "ABC.sp_Update(("filename.txt"))"
FILE_NAME="filename.txt"
db2 call "ABC.sp_Update($FILE_NAME)"
FILE_NAME="filename.txt"
db2 call "ABC.sp_Update($(FILE_NAME))"
ОшибкаЯ получаю:
db2 call ABC.sp_Update(filename.txt)
SQL0206N "FILENAME.TXT" is not valid in the context where it
is used. SQLSTATE=42703
Когда я проверяю статус выполнения команды, я получаю код возврата 4
+ RC=4
До изменения кода это работало нормально:
db2 call "ABC.sp_Update()"
Когда я погуглил описание ошибки 42703
, это Обнаружен неопределенный столбец, атрибут или имя параметра .