存储过程为,其中 RegionId,RegionDes 为字段student_message 为返回值
CREATE PROCEDURE insert_data
(
@RegionID integer,
@RegionDes nchar(50),
@student_message [varchar] (30) output
)
AS set nocount off
begin tran
if (exists (select * from Region where RegionId=@RegionID))
begin
select @student_message='用户名已经存在,请重新输入'
end
else
begin
insert into Region(RegionId,RegionDes) values(@RegionId,@RegionDes)
select @student_message= '数据插入成功'
end
commit tran
Set nocount off
GO
那吗这保存段代码应该如何改进呢
with ADOPro do
begin
AdoPro.ProcedureName:='insert_data';
adopro.Parameters.Refresh;
Parameters.ParamByName('@RegionID').Value:=0;
Parameters.ParamByName('@RegionDes').Value:=edit1.Text;
AdoPro.Prepared;
adoPro.ExecProc; end;
谢谢各位大虾
CREATE PROCEDURE insert_data
(
@RegionID integer,
@RegionDes nchar(50),
@student_message [varchar] (30) output
)
AS set nocount off
begin tran
if (exists (select * from Region where RegionId=@RegionID))
begin
select @student_message='用户名已经存在,请重新输入'
end
else
begin
insert into Region(RegionId,RegionDes) values(@RegionId,@RegionDes)
select @student_message= '数据插入成功'
end
commit tran
Set nocount off
GO
那吗这保存段代码应该如何改进呢
with ADOPro do
begin
AdoPro.ProcedureName:='insert_data';
adopro.Parameters.Refresh;
Parameters.ParamByName('@RegionID').Value:=0;
Parameters.ParamByName('@RegionDes').Value:=edit1.Text;
AdoPro.Prepared;
adoPro.ExecProc; end;
谢谢各位大虾
1.存储过程commit tran 之后加 return 0,表示返回成功
2.程序里,输出参数也要给个初值
with ADOPro do
begin
AdoPro.ProcedureName:='insert_data';
adopro.Parameters.Refresh;
Parameters.ParamByName('@RegionID').Value:=0;
Parameters.ParamByName('@RegionDes').Value:=edit1.Text;
Parameters.ParamByName('@student_message').Value:='';
adoPro.ExecProc;
if ParamByName('@returnValue').Value =0 then //@returnValue名字记不清了,存储过程的静态参数里有
showmessage(ParamByName('@student_message').Value);
end;