问题是我现在就返回字符串的情况下出现乱码。跟返回数据集应该没什么关系吧。
存储过程在后台运行的结果并没有出现乱码。就是传到前台的时就出现了乱码。。。
调用代码如下:
static function TCCGCZYJ.GJHC(as_QDZ: string; as_ZDZ:string; as_GJXL:string; as_errormsg:string; Owner: TForm):String;
var
lDataParam1,lDataParam2,lDataParam3,lDataParam4: TDataParam;//存储过程参数
Storedproc1:TStoredProc;
ErrorMsg : String;
Result_GJXL:String;
begin
StoredProc1 := TStoredProc.Create(Owner);
with StoredProc1 do
try
StoredProc1.ConnectionString := 'DATABASEURL=Biz:\OAXT\OACCGCBSJK.Database';
StoredProc1.StoredProcName := 'GJHC';
StoredProc1.Params.Clear;
lDataParam1 := StoredProc1.Params.CreateParam(TFieldType.ftString, 'as_QDZ',TParamType.ptInput);
lDataParam2 := StoredProc1.Params.CreateParam(TFieldType.ftString, 'as_ZDZ',TParamType.ptInput);
lDataParam3 := StoredProc1.Params.CreateParam(TFieldType.ftString, 'as_GJXL',TParamType.ptOutput);
lDataParam4 := StoredProc1.Params.CreateParam(TFieldType.ftString, 'as_errormsg',TParamType.ptOutput);
lDataParam1.AsString := as_QDZ;
lDataParam2.AsString := as_ZDZ;
StoredProc1.Execute;
Result_GJXL:= StoredProc1.Params.ParamByName('as_GJXL').AsString;
ErrorMsg := StoredProc1.Params.ParamByName('as_errormsg').AsString;
finally
StoredProc1.Free;
end;
if ErrorMsg <> '' then
Dialogs.ShowMessage(ErrorMsg);
Result := Result_GJXL;
end; |