SqlServer数据库
记录一次使用PROC分析数据的应用场景:
遇到这样一个问题,知道程序数据,但是不知道这条数据保存在了哪个表中,现在我们想要追踪该值是存储到了那个表的那个字段中,我们可以借助存储过程来解决这一问题
前言
客户提供操作数据,找出DataBase 中对应的Table、Column。
提示:以下是本篇文章正文内容,下面案例可供参考
一、案例截图
二、使用步骤
1.通过存储过程
create PROCEDURE [dbo].[V_JJL_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
2.使用
“****”是想要查询的字段值
DECLARE @return_value int
EXEC @return_value = [dbo].[V_JJL_P_SYSTEM_FindData]@value = N’****’
SELECT ‘Return Value’ = @return_value
GO
查询得到,问题得到解决
总结
面向百度,可以解决很多问题,尽快找到匹配的解决方案。