0

我在 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
4

0 回答 0