这样的存储过程如何写?

ncoxwwz 2005-03-22 04:10:52
我的查询非常复杂,我想把所有的查询条件综合成一句查询语句,然后再把此查询语句赋给存储过程中的参数,但是出错.请各位帮帮我?急,在线等!我的存储过程如下:
CREATE proc MC014
@t_sqlstr varchar(255)

as
select * from Table1 where @t_sqlstr
go
...全文
155 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunshiyu 2005-03-24
  • 打赏
  • 举报
回复
你的ADOStoredProc1.ExecProc了,就不能返回ADOStoredProc1.RecordCount的值了
只能用ADOStoredProc1.Active:=True;才能返回ADOStoredProc1.RecordCount
ncoxwwz 2005-03-24
  • 打赏
  • 举报
回复
谢谢各位的帮助,问题已经解决,给分.
Frewin 2005-03-23
  • 打赏
  • 举报
回复
ADOStoredProc1.Close;
ADOStoredProc1.Parameters.Clear;
ADOStoredProc1.ProcedureName :='MC014';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@t_sqlstr'').Value:=''
ADOStoredProc1.Prepared;
ADOStoredProc1.Open;
ncoxwwz 2005-03-23
  • 打赏
  • 举报
回复
我用的是Delphi 7,但在程式中出错,请各位帮我看看:
ADOStoredProc1.Close;
ADOStoredProc1.Parameters.Clear;
ADOStoredProc1.ProcedureName :='MC014';
ADOStoredProc1.Parameters.CreateParameter('@t_sqlstr',ftString,pdInput,255,SQLStr);
ADOStoredProc1.Prepared;
ADOStoredProc1.ExecProc;

if ADOStoredProc1.RecordCount =0 then
Begin
Application.MessageBox('Not Inquire Data !','System Information',MB_ICONERROR);
Exit;
end
else
ADOStoredProc1.Active:=True;
出错提示为:cannot perform this operation on a closed dataset.
jinjazz 2005-03-22
  • 打赏
  • 举报
回复
exec('select * from Table1 where 1=1'+@t_sqlstr)

否则 @t_sqlstr 空时就错了
jinjazz 2005-03-22
  • 打赏
  • 举报
回复
exec('select * from Table1 where '+@t_sqlstr)
ncoxwwz 2005-03-22
  • 打赏
  • 举报
回复
我先试一下.首先谢谢了.
xluzhong 2005-03-22
  • 打赏
  • 举报
回复
---需用动态sql
CREATE proc MC014
@t_sqlstr varchar(255)

as
exec('select * from Table1 where '+@t_sqlstr)
go
adminis 2005-03-22
  • 打赏
  • 举报
回复
CREATE proc MC014
@t_sqlstr varchar(255)

as
Exec('select * from Table1 where ' + @t_sqlstr )
go

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧