我有样本火鸟存储过程
PROCEDURE PROCEDURE01
RETURNS (
PARAMETER01 VARCHAR(50))
AS
BEGIN
PARAMETER01 = 'Hello';
END
而在德尔福方面
LCommand := SQLConnection1.DBXConnection.CreateCommand;
LCommand.CommandType := TDBXCommandTypes.DbxStoredProcedure;
LCommand.Text := 'PROCEDURE01';
LIdOut := LCommand.CreateParameter;
LIdOut.ParameterDirection := TDBXParameterDirections.OutParameter;
LIdOut.DataType := TDBXDataTypes.WideStringType;
LIdOut.Name := 'PARAMETER01';
LCommand.Parameters.AddParameter(LIdOut);
LCommand.Prepare;
LReader := LCommand.ExecuteQuery;
并收到例外
“算术异常,数字溢出或字符串截断”
最佳答案
似乎对TDBXCommand(或Dbexpress火鸟驱动程序)有限制,因为使用其他类型的输出参数都可以正常工作。解决方法是使用TSQLStoredProc
类。
试试这个样本。
var
LSQLStoredProc : TSQLStoredProc;
begin
LSQLStoredProc:=TSQLStoredProc.Create(nil);
try
LSQLStoredProc.SQLConnection:=SQLConnection1;
LSQLStoredProc.StoredProcName:='PROCEDURE01';
LSQLStoredProc.ExecProc;
ShowMessage(LSQLStoredProc.ParamByName('PARAMETER01').AsString);
finally
LSQLStoredProc.Free;
end;
end;