我在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中是否存在问题(参数设定值有问题)?