对于返回查询结果的存储过程是否要执行open语句 (45分)

  • 主题发起人 主题发起人 mycwcgr
  • 开始时间 开始时间
M

mycwcgr

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是SQLSERVER 2000中的存储过程
CREATE PROCEDURE user_info
@InputUserid int
as
select ks,name,zw from maintable
where id=@InputuserId
GO

下面是调用语句,但是在运行时出现错误,不过在 ADOStoredProc_for_Newghc.ExecProc;语句后面加上 ADOStoredProc_for_Newghc.open;就正确了。
1。难道 ADOStoredProc_for_Newghc.ExecProc;语句不能返回结果吗?
2。不用 ADOStoredProc_for_Newghc.ExecProc语句而直接用 ADOStoredProc_for_Newghc.open能否可行?
3。对于返回SQL查询结果的存储过程是否一定要执行open语句

ADOStoredProc_for_Newghc.close;
ADOStoredProc_for_Newghc.Parameters.Clear;
ADOStoredProc_for_Newghc.ProcedureName:='user_info';
ADOStoredProc_for_Newghc.Parameters.Refresh;
ADOStoredProc_for_Newghc.Parameters.ParamValues['@InputUserid']:=15;
ADOStoredProc_for_Newghc.ExecProc;

FuserKs:=ADOStoredProc_for_Newghc.fieldbyname('ks').asstring;
FuserName:=ADOStoredProc_for_Newghc.fieldbyname('name').asstring;
FuserZw:=ADOStoredProc_for_Newghc.fieldbyname('Zw').asstring;

showmessage(fusername);
 
返回数据集要用open,不用execproc
 
MSSQL的是OPEN语句。
 
不返回数据集的用open可以,但最好使用exec
 
返回数据集要用open,不返回数据集的用open可以,但最好使用execsql,
在open或execsql前面再加上prepared,执行速度比较快。。。
 
多人接受答案了。
 
后退
顶部