Delphi:如何使用TUniSQL获取MySQL SP的输出参数值

时间:2015-12-05 22:15:36

标签: mysql delphi stored-procedures unidac

我在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'中没有值

执行完成没有任何错误,但例如“TUniSQL.ParamByName('fErr'或'fMsg')。AsString”返回一个空字符串!

我已尝试在SP中设置参数,如下所示:

SET @fErr = 0;

但问题存在

当我使用TUniStoredProc而不是TUniSQL时,这些参数也是空的!

SP中是否存在问题(参数设定值有问题)?

  • 我正在使用Delphi XE6和UniDAC 6.1

0 个答案:

没有答案