准备做一个存储过程,能够通过表中的字段,随意组合(比如可以通过STUID和STUNAME来查询,也可以通过STUNAME和PHONE来查询,这些都是用户随机的),查询表中的信息,不知道自己说的是不是够明白
解决方案 »
- 为什么WHERE条件加了没起效果?
- 有关Log Explorer 的问题
- 不能远程连接SQL2005数据库,请高手帮忙解决下
- sqls2008备份从服务器上备份拷贝到我本本上,还原的时候竟报System.Data.SqlClient.SqlError10240 MB 的许可限制值
- 再问一个基础的请大侠们指点阿
- 请问谁能给我提供一些Microsoft决策树的资料~~~是MS决策树啊
- 在复制项目那下面的发布订阅一个表,能不能在发布时,取消那个自增ID的复制,或者说不要那个字段咧!
- 这是什么原因 “[Microsoft][ODBC SQL Server Driver]超时已过期”
- 高手才进来:触发器的问题
- 如何 取数据的前几名, 剩下的显示其他
- 请问如何提取字段里的部分值
- 如何用日志文件恢复数据库?
(
StuId int,
StuName Nvarchar(8),
Phone Nvarchar(10),
Address Nvarchar(30)
)
go
create proc pro_query
@stuid int = '%',
@stuname nvarchar(8)='%'
as
select * from StuInfo where ((stuid=@stuid) or (@stuid='%')) and ((stuname=@stuname) or (@stuname='%'))
go
StuId nvarchar(10),
StuName nvarchar(8),
Phone nvarchar(10),
Address nvarchar(30)
)
create proc pr_Info @StuId nvarchar(10),
@StuName nvarchar(8),
@Phone nvarchar(10),
@Address nvarchar(30)as
select * from StuInfo
where StuId like '%'+@StuId+'%'
and StuName like '%'+@StuName+'%'
and Phone like '%'+@Phone+'%'
and Address like '%'+@Address+'%'
declare @StuId nvarchar(10),
@StuName nvarchar(8),
@Phone nvarchar(10),
@Address nvarchar(30)
set @StuId='1'
set @StuName=''
set @Phone=''
set @Address=''exec pr_Info @StuId,
@StuName,
@Phone,
@Address
不知道这样是不是符合你的要求,不一样的地方自己再去改变一下
要是在界面上完成的话就很好解决了....
var
sqltext:string;
begin
sqltext:='select * from StuInfo where';
if edit1.text='' then //输入StuId
sqltext:=sqltext+' StuId like ''%''' //由于这里的数据类型integer 就会出错的,自己
考虑一下,或者将StuId改为varchar型
else
sqltext:=sqltext+format(' StuId=''%s''',[strtoint(edit1.text)]);if edit2.text='' then //输入StuName
sqltext:=sqltext+' and StuName like ''%'''
else
sqltext:=sqltext+format(' and StuName=''%s''',[edit2.text]);if edit3.text='' then //输入phone
sqltext:=sqltext+' and phone like ''%'''
else
sqltext:=sqltext+format(' and phone=''%s''',[edit3.text]);if edit4.text='' then //输入Address
sqltext:=sqltext+' and Address like ''%'''
else
sqltext:=sqltext+format(' and Address=''%s''',[edit4.text]); self.ADOQuery1.Close;
self.ADOQuery1.SQL.Clear;
self.ADOQuery1.SQL.Add(sqltext);
self.ADOQuery1.Open;
end;