php - 从 PHP 调用时未找到 DB2 函数
问题描述
我正在尝试使用 zend_db 从 PHP 调用 DB2 函数以连接到 DB2,并像这样调用 SQL 语句:
SELECT colA, colB, colC, mylib.testfunc(colA, colB, colC)
FROM otherlib.tableABC
WHERE colA = ... etc
(仅供参考,这里是调用一个返回特定值的RPG程序,所以它只返回一个值)。这在 ACS Run SQL Scripts 窗口中有效,但是当我尝试使用 Zend 时,我收到以下错误:
Fatal error: Uncaught exception 'Zend_Db_Statement_Db2_Exception' with message 'TESTFUNC in MYLIB type *N not found. SQLCODE=-204'
我已经仔细检查以确保我的函数确实存在并且它在 mylib 中。进行谷歌搜索没有什么真正有用的。为什么它会告诉我它不存在?通过 Zend_DB 连接到 DB2 时,我必须配置什么特定的东西吗?
如果它很重要,我制作了这样的功能:
CREATE OR REPLACE FUNCTION mylib.testfunc(iA DECIMAL(2,0), iB CHAR(4), iC DECIMAL(2,0))
RETURNS CHAR(10)
MODIFIES SQL DATA
LANGUAGE SQL
BEGIN
DECLARE oReturn CHAR(10) DEFAULT ' ';
-- Here I call a procedure I created to call the RPG
-- and format data...
RETURN oReturn;
END
提前致谢。
解决方案
PHP 和“ACS Run SQL Scripts”之间用于连接 Db2 的用户 ID(帐户名)是否相同?
如果没有,请验证用于 PHP 的帐户是否具有对函数以及函数调用的任何存储过程或外部程序/例程的执行访问权限。
此外,当您的 SQL 函数调用存储过程时,请考虑使用限定的存储过程名称。
推荐阅读
- android - React-Native 无法登录构建 apk
- laravel - laravel 中的 concat 列名 where 条件
- c# - 如何从 ASP.Net Web API 中的 SQL 表中获取嵌套的 JSON 对象
- python-3.x - 开始远离 y 轴的线图
- php - curl 不起作用并且无法显示 print_r 数据
- c# - 正则表达式 - 仅当另一个命名组匹配时命名组
- mongodb - NestJS Mongoose 连接在负载测试时终止
- spring-rabbit - 我需要在配置文件中添加任何其他内容吗?
- javascript - 如何使用 Vue.js 方法设置数据属性
- cmake - 在 Rust 上链接 C++:对 `operator delete(void*)' 和 `__gxx_personality_v0' 的未定义引用,缺少 libstdc++?