三层结构的高手看过来,用存储过程INSERT数据有问题!!!!!!!!!!!!!!!!(50分)

  • 主题发起人 主题发起人 gaskell
  • 开始时间 开始时间
G

gaskell

Unregistered / Unconfirmed
GUEST, unregistred user!
我用一个存储过程来擦入数据,在数据库服务器(sql server 2000)的存储过程我这么写(大概的写法)
/////////////////////////////////////
@id int,◎select int//这两个是输入参数
if select=1 //如果是查询
begin
select id from table1
return
end
else//如果是插入数据
begin
insert table1(id)vaule(@id)
end
go
/////////////////////////////////////
在前台程序中我用了ADO存储过程来存数据,我用的是三层结构,客户端我是这么写的
ClientDataSet1.Close;
ClientDataSet1.Params.ParamByName('id').asinteger:=2;
ClientDataSet1.Params.ParamByName('sELECT').asinteger:=0;
ClientDataSet1.Active:=true;
奇怪的是数据能存入到数据库,但是前台的程序提示说ADO存储过程没有返回一个数据集,然后程序中止,
但是我如果把select设为1,就是只查询,那就没有问题了,大家看看问题处在哪里?
 
ClientDataSet1.Close;
ClientDataSet1.Params.ParamByName('id').asinteger:=2;
[8D] ClientDataSet1.Params.ParamByName('sELECT').asinteger:=0;[8D]//插入功能.
ClientDataSet1.Active:=true;
改;
ClientDataSet1.Params.ParamByName('sELECT').asinteger:=1;
是查看功能.
 
else//如果是插入数据
begin
insert table1(id)vaule(@id)
[blue]加上一句:select 0[/blue]
end
 
你可以把查询和插入数据的存储过程分开用两个存储过程,用adoquery的时候,查询时用adoquery1.open;
插入数据时用adoquery1.execsql;因为execsql没有返回的数据集,而open有
 
LYCOK,thank you
thank all of you
 
后退
顶部