以下是我写的简单的存储过程
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。请教改如何解决?谢谢
解决方案 »
- 这个函数错在哪儿?
- 请教几个图形图像编辑的编程问题,c++builder方面的(delphi亦可)
- 怎么捕获PowerPoint 退出的消息?
- 有一定挑战性的问题:dbGridEh中,有一字段为checkbox类型的,点击某一行的checkbox,触发的是啥事件?
- 请问如何有没有办法去掉radiogroup控件的外边框?谢谢!
- 同志们,帮帮我呀~
- 探讨一道经典的算法问题,参与者有分!
- 请问那个toolbar里的imagelist怎么用?简单的说就是给toolbutton加图标怎么搞的?
- SPComm的问题,请大虾解决,急!急!急!十万火急!!!
- 有没有人用Delphi做过Web开发?
- 怎样能使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);