从UNIX调用存储过程时出错

时间:2011-06-27 23:50:19

标签: unix stored-procedures db2

我有一个没有参数的存储过程,这些参数是从UNIX调用的 脚本由db2 call和SP工作正常,脚本运行良好。

新要求是将文件名传递给存储过程并执行一些操作 业务逻辑 - 我无法将文件名从UNIX传递给SP。我使用IN的{​​{1}}参数。

SP编译正常,并且在正确的架构中可用 - 我调用了 使用多种方式,但没有一种方法可以正常工作。

请帮我调试一下。

DB2存储过程:

Varchar(50)

我尝试过的不同方法从UNIX脚本调用DB2存储过程

  1. CREATE PROCEDURE ABC.sp_Update(IN FILE_NAME VARCHAR(50))

  2. db2 call "ABC.sp_Update("filename.txt")"

  3. db2 call "ABC.sp_Update(("filename.txt"))"
  4. FILE_NAME="filename.txt"
    db2 call "ABC.sp_Update($FILE_NAME)"
    
  5. 我得到的错误:

    FILE_NAME="filename.txt"
    db2 call "ABC.sp_Update($(FILE_NAME))"
    

    当我检查命令的执行状态时,我得到一个返回代码4

    db2 call ABC.sp_Update(filename.txt)
    SQL0206N  "FILENAME.TXT" is not valid in the context where it
    is used.  SQLSTATE=42703
    

    在代码更改之前,这很好用:

    + RC=4
    

    当我用Google搜索错误db2 call "ABC.sp_Update()" 的说明时,它是检测到未定义的列,属性或参数名称

1 个答案:

答案 0 :(得分:0)

抱歉伙计 - 应该使用一个报价 - 它有效 - 谢谢和抱歉