首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQuirrel调用存储过程

SQuirrel调用存储过程
EN

Stack Overflow用户
提问于 2021-02-02 08:32:43
回答 1查看 463关注 0票数 0

我试图从松鼠那里调用一个DB2存储过程。我可以从DB2命令行处理器成功地调用存储过程。

代码语言:javascript
复制
 CALL PIPPOOWN.PIPPO
('04','prov','0001','provprov')

我将;retrieveMessagesFromServerOnGetMessage=true;附加到数据库的连接字符串中。

代码语言:javascript
复制
jdbc:db2://xx.xx.x.xx:50001/DB2XYX:retrieveMessagesFromServerOnGetMessage=true;

但是当我在松鼠身上尝试这个时,我会得到这个错误信息。我在跑步

代码语言:javascript
复制
Error: [jcc][10413][10940][4.19.49]
Analisi della sostituzione letterale non riuscita per la chiamata della procedura a DB2 per z/OS.
Testo SQL non riuscito CALL
SP_XXXXX('XX','prova').
ERRORCODE=-4463, SQLSTATE=42601
SQLState:  42601
ErrorCode: -4463


2021-02-02 12:01:03,409 [Thread-6] ERROR net.sourceforge.squirrel_sql.fw.util.DefaultExceptionFormatter  - Exception occurred while formatting:  null
java.lang.NullPointerException
    at net.sourceforge.squirrel_sql.plugins.db2.DB2JCCExceptionFormatter.format(DB2JCCExceptionFormatter.java:93)
    at net.sourceforge.squirrel_sql.fw.util.DefaultExceptionFormatter.format(DefaultExceptionFormatter.java:68)
    at net.sourceforge.squirrel_sql.client.session.Session.formatException(Session.java:1195)
    at net.sourceforge.squirrel_sql.client.session.mainpanel.SQLExecutionHandler.sqlExecutionException(SQLExecutionHandler.java:458)
    at net.sourceforge.squirrel_sql.client.session.SQLExecuterTask.handleError(SQLExecuterTask.java:621)
    at net.sourceforge.squirrel_sql.client.session.SQLExecuterTask.runDirect(SQLExecuterTask.java:264)
    at net.sourceforge.squirrel_sql.client.session.SQLExecuterTask.run(SQLExecuterTask.java:137)
    at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
    at java.lang.Thread.run(Unknown Source)

我更新了jdbc驱动程序,但没有修复。

DB2版本: 11.01

如果我使用或使用一个DB2 AIX,它就能工作。

编辑03/02/2021

我下载了“用于JDBC和SQLJ (JCC驱动程序)的和SQLJ(JCC驱动程序)”11.5.4版,然后将其配置为使用db2jcc4.jar,现在它给出了以下错误:

代码语言:javascript
复制
NO AUTHORIZED PROCEDURE NAMED PIPPOOWN.PIPPO HAVING COMPATIBLE ARGUMENTS WAS FOUND. 
SQLCODE=-440, SQLSTATE=42884, DRIVER=4.26.14 SQL Code: -440, SQL State: 42884

但是,如果我对同一个用户和语句使用IBM数据工作室,则不会出现错误。

存储过程"PIPPO“-授予

代码语言:javascript
复制
GRANT EXECUTE ON PROCEDURE "PIPPOOWN"."PIPPO" TO "ALL";
GRANT EXECUTE ON PROCEDURE "PIPPOOWN"."PIPPO" TO "PUBLICB";
GRANT EXECUTE ON PROCEDURE "PIPPOOWN"."PIPPO" TO "PIPPOOWN" WITH GRANT OPTION;
GRANT EXECUTE ON PROCEDURE "PIPPOOWN"."PIPPO" TO "USERWEB";
GRANT EXECUTE ON PROCEDURE "PIPPOOWN"."PIPPO" TO PUBLIC;

存储过程"PIPPO“-分发选项(使用Data )

松鼠CURRENT_PATH

代码语言:javascript
复制
SELECT CURRENT_PATH FROM SYSIBM.SYSDUMMY1

RESULTS
-----------------------------------------------
"SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","PIPPOOWN"

最后,我在松鼠日志中找不到任何错误。

有什么想法吗?

编辑04/02/2021

我超出了松鼠上的call语句,启用了JDBC日志,并发现了以下错误:

代码语言:javascript
复制
[jcc][Time:2021-02-04-10:16:23.549][Thread:Thread-4][Statement@f7f204]**execute (CALL OWNER1.SP_ABC('xx')) called**
[jcc][Time:2021-02-04-10:16:23.549][Thread:Thread-4][Statement@f7f204]stmt_bidiTransform (CALL OWNER1.SP_ABC('xx')) called
[jcc][Time:2021-02-04-10:16:23.549][Thread:Thread-4][Statement@f7f204]**stmt_bidiTransform not enabled (CALL OWNER1.SP_ABC('xx')) called**
[jcc][t4][time:2021-02-04-10:16:23.549][Thread:Thread-4][tracepoint:1][Request.flush]
[jcc][t4]        SEND BUFFER: EXCSQLSTT              (ASCII)           (EBCDIC)
...
.....
**com.ibm.db2.jcc.am.SqlSyntaxErrorException
**  at com.ibm.db2.jcc.am.b7.a(b7.java:810)
    at com.ibm.db2.jcc.am.b7.a(b7.java:66)
    at com.ibm.db2.jcc.am.b7.a(b7.java:140)
    at com.ibm.db2.jcc.am.k4.b(k4.java:2471)
    at com.ibm.db2.jcc.am.k4.c(k4.java:2452)
    at com.ibm.db2.jcc.t4.ab.n(ab.java:914)
    at com.ibm.db2.jcc.t4.ab.f(ab.java:156)
    at com.ibm.db2.jcc.t4.p.e(p.java:81)
    at com.ibm.db2.jcc.t4.av.k(av.java:175)
    at com.ibm.db2.jcc.am.k4.ao(k4.java:2413)
    at com.ibm.db2.jcc.am.k4.a(k4.java:3383)
    at com.ibm.db2.jcc.am.k4.e(k4.java:1131)
    at com.ibm.db2.jcc.am.k4.execute(k4.java:1110)
    at net.sourceforge.squirrel_sql.client.session.StatementWrapper.execute(StatementWrapper.java:168)
    at net.sourceforge.squirrel_sql.client.session.SQLExecuterTask.processQuery(SQLExecuterTask.java:361)
    at net.sourceforge.squirrel_sql.client.session.SQLExecuterTask.runDirect(SQLExecuterTask.java:214)
    at net.sourceforge.squirrel_sql.client.session.SQLExecuterTask.run(SQLExecuterTask.java:137)
    at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
    at java.lang.Thread.run(Unknown Source)

为了比较不同的日志,我还激活了日志(调用语句在其中正确工作),并注意到在执行execute()之前已经完成了一个prepareCall()。

IBM数据演播室

代码语言:javascript
复制
[jcc][Time:2021-02-03-20:52:10.381][Thread:Worker-19][Connection@97f8a03c]prepareCall (CALL OWNER1.SP_ABC('XX')) called
[jcc] [time:2021-02-03-20:52:10.383][Thread:Worker-19][tracepoint:4000]LiteralInfo entry,sql:CALL OWNER1.SP_ABC('XX')
[jcc] [time:2021-02-03-20:52:10.387][Thread:Worker-19][tracepoint:4005]LiteralInfo.return,OriginalSQL:CALL OWNER1.SP_ABC('XX'), modifiedSQL:CALL OWNER1.SP_ABC(?), literalCount=1, parmCount=1[CHARACTER(XX)]
[jcc][Time:2021-02-03-20:52:10.390][Thread:Worker-19][Connection@97f8a03c]prepareCall () returned MappedCallableStatement@691cf97[com.ibm.db2.jcc.am.CallableStatement@88958c83]
[jcc][Time:2021-02-03-20:52:10.390][Thread:Worker-19][Connection@97f8a03c]prepareCall () returned MappedCallableStatement@691cf97[com.ibm.db2.jcc.am.CallableStatement@88958c83]
[jcc][Thread:Worker-19][SystemMonitor:stop] core: 9.5471ms | network: 0.0ms | server: 0.0ms 
[jcc][Time:2021-02-03-20:52:10.390][Thread:Worker-19][CallableStatement@88958c83]setMaxRows (0) called
[jcc][Time:2021-02-03-20:52:10.390][Thread:Worker-19][CallableStatement@88958c83]setString (1, XX) called
[jcc][Thread:Worker-19][SystemMonitor:start] 
[jcc][Time:2021-02-03-20:52:10.390][Thread:Worker-19][CallableStatement@88958c83]execute () called
[jcc][Time:2021-02-03-20:52:10.390][Thread:Worker-19][CallableStatement@88958c83]stmt_bidiTransform (CALL OWNER1.SP_ABC(?)) called
[jcc][Time:2021-02-03-20:52:10.390][Thread:Worker-19][CallableStatement@88958c83]stmt_bidiTransform not enabled (CALL OWNER1.SP_ABC(?)) called
[jcc][t4][time:2021-02-03-20:52:10.390][Thread:Worker-19][tracepoint:1][Request.flush]


I looked in the [IBM documentation][4] and it seems that in order to call SP with parameters in the Z/OS environment, it is necessary to perform a PreparedStatement.

在这一点上我认为是松鼠虫..。

EN

回答 1

Stack Overflow用户

发布于 2021-02-05 16:10:12

我试图在松鼠-sql:bug#1457 z/os上打开一个带有输入参数的BUG: DB2调用存储过程

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66006095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档