我在 MySQL 数据库中创建了一个存储过程,它有 2 个像这样的输出参数(例如):
CREATE PROCEDURE `invite_user`(fUName VARCHAR(15) CHARSET utf8, fRegCode VARCHAR(15) CHARSET utf8, fEmail VARCHAR(30) CHARSET utf8, fInviter VARCHAR(15) CHARSET utf8,
OUT fErr INT, OUT fMsg VARCHAR(255) CHARSET utf8)
BEGIN
...
IF (@C = 0) THEN
...
SET fErr = 0;
SET fMsg = '';
ELSE
SET fErr = 1;
SET fMsg = 'Not Found !';
END IF;
END
我想使用 TUniSQL 执行这个 SP 并获取 fErr 和 fMsg 的输出值,当我使用 TUniSQL 的 SP 调用生成器时,它会生成这个 SQL:
CALL invite_user(:fUName, :fRegCode, :fEmail, :fInviter, @fErr, @fMsg);
SELECT CAST(@fErr AS SIGNED) AS '@fErr', @fMsg AS '@fMsg'
和输出参数在 TUniSQL 的参数列表中列出为 'fErr' 和 'fMsg'
但是执行 TUniSQL 后,'fErr' 和 'fMsg' 中没有 Value
执行没有任何错误,但例如 "TUniSQL.ParamByName('fErr' or 'fMsg').AsString" 返回一个空字符串!
我曾尝试在 SP 中设置参数,如下所示:
SET @fErr = 0;
但问题存在
当我使用 TUniStoredProc 而不是 TUniSQL 时,这些参数也是空的!
SP是否有问题(参数设置值问题)?
- 我正在使用 Delphi XE6 和 UniDAC 6.1