以下是我写的简单的存储过程
CREATE PROCEDURE [dbo].[Htest]
@FInt int,@FR varchar(50) output
AS
if @Fint=0
set @FR='K0'
else
set @FR='K1'
Return @FR
GO
在delphi中调用如下
with ADOStoredProc1 do
begin
close;
ProcedureName:='HTest'
Parameters.Refresh;
Parameters.ParamByName('@Fint').Value:=0;//参数
Parameters.ParamByName('@FR').Value := 0;
Prepared;
ExecProc;
NUM:=Parameters.ParamByName('@FR').Value;//返回值
end;
showmessage(NUM);
错误提示:K1转化为数据类型int是错误;
如果把存储过程改为如下则在delphi中调用正常
CREATE PROCEDURE [dbo].[Htest]
@FInt int,@FR varchar(50) output
AS
if @Fint=0
set @FR='0'
else
set @FR='1'
Return @FR
GO疑问:
1.我在存储过程中定义了返回值是varchar(50),怎么会是转化为int呢?
难道存储过程的返回值只能是int型的?
2。请教改如何解决?谢谢
CREATE PROCEDURE [dbo].[Htest]
@FInt int,@FR varchar(50) output
AS
if @Fint=0
set @FR='K0'
else
set @FR='K1'
Return @FR
GO
在delphi中调用如下
with ADOStoredProc1 do
begin
close;
ProcedureName:='HTest'
Parameters.Refresh;
Parameters.ParamByName('@Fint').Value:=0;//参数
Parameters.ParamByName('@FR').Value := 0;
Prepared;
ExecProc;
NUM:=Parameters.ParamByName('@FR').Value;//返回值
end;
showmessage(NUM);
错误提示:K1转化为数据类型int是错误;
如果把存储过程改为如下则在delphi中调用正常
CREATE PROCEDURE [dbo].[Htest]
@FInt int,@FR varchar(50) output
AS
if @Fint=0
set @FR='0'
else
set @FR='1'
Return @FR
GO疑问:
1.我在存储过程中定义了返回值是varchar(50),怎么会是转化为int呢?
难道存储过程的返回值只能是int型的?
2。请教改如何解决?谢谢
解决方案 »
- 有关combobox的值
- 編譯出錯:[fatal error]internal error la30
- tdbcombobox的问题??
- 三层的一个小问题,RPC服务器不可用......请求帮忙,谢谢
- 问个简单SQL问题
- 呵呵!小问题!怎样取得一组字符串的ascii码?
- 怎么用Delphi7实现文件夹的压缩????(急用)用100分求救
- 关于Form的Print问题
- 有谁用DELPHI结合softSENTRY(sseval、Sentry)做过共享软件,请问如何建立DLL及调用?
- 关于足球比赛赛程的安排问题
- 怎样能使QRDBText中的内容超过一定的字符就自动换行显示?
- 没有人回答我的问题,我好伤心啊
问题不难,你可能对存储过程的参数使用不太了解。
你问的问题一不成立,那是因为你的存储过程写错了。
问题二:首先ProcedureName:='HTest'这句少一个“;"
其次存储中Return @FR这句改为Return就行了
如果你不明白可以问我:[email protected]
with ADOStoredProc1 do
begin
close;
ProcedureName:='HTest'
Parameters.Refresh;
Parameters.ParamByName('@Fint').Value:=0;//参数
Prepared;
ExecProc;
NUM:=Parameters.ParamByName('@FR').Value;//返回值
end;
showmessage(NUM);
begin
close;
ProcedureName:='HTest'
Parameters.Refresh;
Parameters.ParamByName('@Fint').Value:=0;//参数
Parameters.ParamByName('@FR').Value := 0;///无须这样做, Parameters.ParamByName('@FR').Value := ‘’;
Prepared;
ExecProc;
NUM:=Parameters.ParamByName('@FR').Value;//返回值
end;
showmessage(NUM);