当前位置:Gxlcms > 数据库问题 > Sql Server 中 根据具体的值 查找该值所在的表和字段

Sql Server 中 根据具体的值 查找该值所在的表和字段

时间:2021-07-01 10:21:17 帮助过:46人阅读

PROCEDURE [dbo].[P_SYSTEM_FindData] ( @value VARCHAR(1024) ) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @sql VARCHAR(1024) DECLARE @table VARCHAR(64) DECLARE @column VARCHAR(64) CREATE TABLE #t ( tablename VARCHAR(64), columnname VARCHAR(64) ) DECLARE TABLES CURSOR FOR SELECT o.name, c.name FROM syscolumns c INNER JOIN sysobjects o ON c.id = o.id WHERE o.type = U AND c.xtype IN (167, 175, 231, 239) ORDER BY o.name, c.name OPEN TABLES FETCH NEXT FROM TABLES INTO @table, @column WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = IF EXISTS(SELECT NULL FROM [ + @table + ] SET @sql = @sql + WHERE RTRIM(LTRIM([ + @column + ])) LIKE ‘‘% + @value + %‘‘) SET @sql = @sql + INSERT INTO #t VALUES (‘‘‘ + @table + ‘‘‘, ‘‘‘ SET @sql = @sql + @column + ‘‘‘) EXEC(@sql) FETCH NEXT FROM TABLES INTO @table, @column END CLOSE TABLES DEALLOCATE TABLES SELECT * FROM #t DROP TABLE #t End

 

创建好存储过程后,开始查询了,我们选中存储过程,写入参数,点击执行即可

查询代码如下(或者右键执行存储过程也行):

DECLARE    @return_value int
 
EXEC    @return_value = [dbo].[P_SYSTEM_FindData]
        @value = N张三
 
SELECT    Return Value = @return_value
 
GO

 

执行完后,即可找到该值所在的表和字段

技术图片

tablename:表名

columnname:字段名

 

原表数据如下:

表名:[Staff]

数据:

技术图片

Sql Server 中 根据具体的值 查找该值所在的表和字段

标签:into   prevent   数据保存   cursor   exist   span   obj   fetch   style   

人气教程排行