SQL 存储过程实现 多表关键字模糊查询

用asp.net开发的网页,网页有sql后台数据库支持,数据库下设多个表。要求用sql语句开发一个搜索的存储过程,存储过程有表名,列名,关键字三个参数,搜索的关键字不能为... 用asp.net开发的网页,网页有sql后台数据库支持,数据库下设多个表。要求用sql语句开发一个搜索的存储过程,存储过程有 表名,列名,关键字三个参数,搜索的关键字不能为空。
1.当参数 表名为空的时候,输出每个表查得的数据总条数便可(遍历所有的表的所有列);
2.当参数 表名不为空时要求输出指定查询的表中的所有查询结果(遍历单表);
3.当参数 表名 列名不为空的时候,进行精确查询。。
谢谢~~项目开发急用,自己的分不多还请大家理解。。
展开
 我来答
我要注册和登录
2010-03-11 · TA获得超过451个赞
知道小有建树答主
回答量:301
采纳率:100%
帮助的人:416万
展开全部
用游标在sysobjects里面取表名,xtype='U'表示为表。根据实际需要加where条件
create procedure proc_query
(@table_name nvarchar(100)=N''
,@col_name nvarchar(200)=N''--@col_name 格式为col1,col2,col3
)
as
begin
declare @sql nvarchar(2000);
create table #table(table_name nvarchar(100),num_count int);
--列名空,表名有
if ( @col_name =N''and @table_name <>N'')
begin
set @sql='select * from '+@table_name;
exec sp_executesql @sql;
end
--表名空
if (@table_name =N'')
begin
DECLARE tableCursor CURSOR FOR
select name from sysobjects where xtype='U'
OPEN tableCursor
FETCH NEXT FROM tableCursor
INTO @table_name
WHILE @@FETCH_STATUS=0
BEGIN
set @sql='insert into #table select '''+@table_name+''',count(*) from '+@table_name;
exec sp_executesql @sql;
FETCH NEXT FROM tableCursor
INTO @table_name
END
close tableCursor
deallocate tableCursor

select * from #table
drop table #table
end
--列名有,表名有
if (@table_name <>N'' and @col_name <>N'' )
begin
set @sql='select '+@col_name+' from '+@table_name;
exec sp_executesql @sql;
end

end
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式