存储过程本身已测试,无问题,能够返回正确结果,但在Delphi程序中,
运行会出现错误,程序片断: ADOSP.Active := False;
ADOSP.ProcedureName := 'sp_InsertRole'; ADOSP.Parameters.Clear; //清空参数列表
with ADOSP.Parameters.AddParameter do //追加新参数
begin
Name := 'ARoleID';
DataType := ftString;
Direction := pdInput;
Size := 2;
end;
with ADOSP.Parameters.AddParameter do
begin
Name := 'AName';
DataType := ftString;
Direction := pdInput;
Size := 30;
end;
with ADOSP.Parameters.AddParameter do
begin
Name := 'RtnValue';
DataType := ftBCD;
Direction := pdInputOutput;
end;
if not ADOSP.Prepared then ADOSP.Prepared := True; ADOSP.Parameters.ParamByName('ARoleID').Value := RoleID;
ADOSP.Parameters.ParamByName('AName').Value := Name;
ADOSP.ExecProc;//这里会出错
Result := ADOSP.Parameters.ParamByName('RtnValue').Value;如果去掉返回值,程序正常,很显然返回变量这儿有问题,不知道怎么改?
运行会出现错误,程序片断: ADOSP.Active := False;
ADOSP.ProcedureName := 'sp_InsertRole'; ADOSP.Parameters.Clear; //清空参数列表
with ADOSP.Parameters.AddParameter do //追加新参数
begin
Name := 'ARoleID';
DataType := ftString;
Direction := pdInput;
Size := 2;
end;
with ADOSP.Parameters.AddParameter do
begin
Name := 'AName';
DataType := ftString;
Direction := pdInput;
Size := 30;
end;
with ADOSP.Parameters.AddParameter do
begin
Name := 'RtnValue';
DataType := ftBCD;
Direction := pdInputOutput;
end;
if not ADOSP.Prepared then ADOSP.Prepared := True; ADOSP.Parameters.ParamByName('ARoleID').Value := RoleID;
ADOSP.Parameters.ParamByName('AName').Value := Name;
ADOSP.ExecProc;//这里会出错
Result := ADOSP.Parameters.ParamByName('RtnValue').Value;如果去掉返回值,程序正常,很显然返回变量这儿有问题,不知道怎么改?
解决方案 »
- 问在用fastreport时,如何根据Memo的字段长度动态更改MasterData的高度?
- 哪位兄弟有ODAC啊?4.15的,急……
- 有关控件安装的问题。很奇怪!!!
- 一个DLL中ADO数据源的问题!!!!!!!!!
- 招聘北京delphi程序员
- 在2000下开发和打包的程序安装在WIN98中运行时出现非法操作,为什么?
- 使用Tquery进行查询,出现错误:When GROUP BY exists, every simple field in projectors must be in GROUP BY.这是怎么回事?
- 如何生成 gif 或者 jpeg 格式的图片文件?
- 请问:谁知道那里有能将dateset的数据直接倒到excel的控件或者有没有什么比较好的方法除了先读出记录然后一条条的在excel控件的表格里写入还有其他方法吗?
- 使用ADO有什么经验教训?
- 主从批量更新时出现异常, 找了许久也没有找到解决办法. 郁闷啊 !!! 请前辈们给我看一下. 分不够再加
- 单列listview里面的图标怎么让它居中
ADOSP.Active := False;
ADOSP.ProcedureName := 'SP_INSERTROLE';
ADOS.Prepared:=true;
adosp.Parameters.parambyname('ARoleID').value:=your param;
...
aDOSP.ExecProc;
Result := ADOSP.Parameters.ParamByName('RtnValue').Value;
ADOS.Prepared:=false;
ADOSP.Parameters.ParamByName('AName').Value := Name;
ADOSP.Parameters.ParamByName('RtnValue'').Value := 0;
begin
Name := 'RtnValue';
DataType := ftBCD;
Direction := pdInputOutput; //或改成pdOutput
end;(注:対出入型pdInputOutput、也要在実行前付値)
{...}
ADOSP.Parameters.ParamByName('RtnValue').Value := ' ';
ADOSP.ExecProc;
我的代码是基于MSSQL的,现在要移植到Oracle上to fenglaile(风清飘) :
ADOSP是个公用控件,不知道ADOS.Prepared:=true;能不能自动加载参数to huanying200X(幻影200X)、 cronuz(cronus) :
我还真没注意,在MSSQL上没有这个限制