非常简单的存储过程问题,如何写一个这样的简单查询的存储过程?

chenjiong 2002-11-27 09:40:06
刚接触这东西,希望大家多指教,想写一个简单的存储过程如下:

在存储过程中加入一个参数@Psql ,由程序调用时返回一个值,其实这个值就是SQL的where部分,即查询的条件。


CREATE PROCEDURE [dbo].[SelectMainTable] @Psql Varchar(240) AS

select * from 表 where @Psql //这里是如何写的呀?@Psql 的value比如是 '编号='12345'之类的'

如果写成select * from 表 where @Psql 的话看来是不符合要求的。


见笑了,谢谢参与。
...全文
12 点赞 收藏 9
写回复
9 条回复
colderboy 2002年11月29日
存储过程中句未不用写";"的
回复 点赞
chenjiong 2002年11月29日
行了。除了你的beign略有不同,:)
给分。
回复 点赞
shuangsa 2002年11月29日
CREATE PROCEDURE [dbo].[selectmain] @psql varchar(200)
as
beign
Declare @sql as varchar(200) ;
set @sql='select * from info_jibeng where '+@psql;
exec(@sql);
end;
回复 点赞
chenjiong 2002年11月28日
CREATE PROCEDURE [dbo].[selectmain] @psql varchar(200) as
Declare @sql as varchar(200) ;
@sql='select * from info_jibeng where '+@psql; //这一行有问题?
exec(@sql);
回复 点赞
chenjiong 2002年11月28日
因为后面的条件是比较复杂的,可以说是不计条件的,可以自由组合。所以不能象 mmtang3(笑马) ( ) 那样做。楼上的方法我也看看。
回复 点赞
flyingkiller 2002年11月27日
Declare @sql as varchar(200);
@sql='select * from table where '+@psql;
exec(@sql);

@Psql 的value是 编号='12345'
则输入参数@psql='编号='+char(39)+'12345'+char(39)
回复 点赞
mmtang3 2002年11月27日
不太清楚,好像不行,不过
如果存储过程中多一个表示字段的参数(@value,@FieldNum),比如说有姓名和地址两个字段
当想根据姓名查询时@FieldNum取1,@value取相应的值,当想用地址来查询时,@FieldNum取2 ,
不知行吗?
回复 点赞
zycipher 2002年11月27日
不知道你用的是什么,我用的是ADO,可以用ADOCommand对象,它可以设置参数。
var strSql:string;
var adocmd:TADOCommand;
strSql:='select * from table1 where field=:paramid';
adocmd:=TADOCommand.Create(self);
adocmd.ConnectionString:='';//你自己连接一下。
adocmd.CommandType := cmdText;
adocmd.CommandText:=strSql;
adocmd.Parameters.ParamByName('paramid').Value:=strTemp;
//假设你的值为strTemp
rs:=adocmd.Execute;

我也有个问题,不知道delphi中有没有转义符啊?转义单引号。
回复 点赞
chenjiong 2002年11月27日
哦,看来这个想法是不行的。
where xxx=@psql还差不多,where后直接跟@psql是不行 的。
回复 点赞
发动态
发帖子
数据库相关
创建于2007-08-02

1211

社区成员

8.8w+

社区内容

Delphi 数据库相关
社区公告
暂无公告