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