用的sql server 2008,想要实现在同一数据库的多个表中查询是否存在某一行的id=10, 10

用的sqlserver2008,想要实现在同一数据库的多个表中查询是否存在某一行的id=10,怎么写代码?跪求!... 用的sql server 2008,想要实现在同一数据库的多个表中查询是否存在某一行的id=10,怎么写代码?跪求! 展开
 我来答
鲜美还清湛灬白桦N
2015-10-21 · TA获得超过621个赞
知道小有建树答主
回答量:404
采纳率:50%
帮助的人:528万
展开全部
--你这个是指定id字段去查询还好点,要是所有表所有字段去查询某个值
--数据库大就郁闷了
Create Procedure sp_Search(@Val Varchar(4000))
As
Begin
    Declare @TBName Varchar(200)
    Declare @ColName Varchar(200)
    Declare @Rst int
    Declare @Sql NVarchar(4000)
    Declare @TB Table(TbName Varchar(200))
    Declare myCur Cursor For
    Select A.Name,B.Name From sys.objects A Inner join sys.columns B on a.object_id=b.object_id
    Where A.Type='U' And B.name='id'
    Open myCur;
    Fetch Next From myCur Into @TBName,@ColName
    While @@FETCH_STATUS = 0
    Begin
    Set @Sql='If Exists(Select * From ['+@TBName+'] Where id = @Val)'
    Set @Sql=@Sql+'Set @Rst=1 '
    Set @Sql=@Sql+'Else '
    Set @Sql=@Sql+'Set @Rst=0 '
    Exec sp_Executesql @sql,N'@Val Varchar(4000),@Rst int output',@Val,@Rst output
    If(@Rst=1)
    Insert Into@TB values(@TBName)  
    Fetch Next From myCur Into @TBName,@ColName
    End
    Close myCur
    DeAllocate myCur
    Select * From @TB
End
/*
测试:
Exec sp_search 10
思路:
先查询出有id字段的所有表,然后查询值是否等于@Val,如果等则保存表名,最后返回结果
*/
追问
我试试
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式