第一次在博客園寫博客,也算是一個新的開始吧。閑話少說! 筆者之前推行OA系統的時候,管理員賬號一開始設的是admin,用了一段時間之後為了規範統一要改為ADMIN。 那問題來了,除了用戶表之外,還有哪些表哪些欄位的內容,已經記錄了admin呢? 上網查了表及欄位的相關知識之後,加上游標整庫搜索,終於 ...
第一次在博客園寫博客,也算是一個新的開始吧。閑話少說!
筆者之前推行OA系統的時候,管理員賬號一開始設的是admin,用了一段時間之後為了規範統一要改為ADMIN。
那問題來了,除了用戶表之外,還有哪些表哪些欄位的內容,已經記錄了admin呢?
上網查了表及欄位的相關知識之後,加上游標整庫搜索,終於達到了目的,存儲過程代碼如下:
CREATE PROCEDURE [dbo].[rc_ValueSearch] @Value VARCHAR(30) AS BEGIN CREATE TABLE #R (TableName VARCHAR(30),FieldName VARCHAR(30)) DECLARE @TableNameTemp VARCHAR(30) DECLARE @FieldNameTemp VARCHAR(30) DECLARE @SQL VARCHAR(200) DECLARE curTemp CURSOR FOR SELECT TOP 100 PERCENT dbo.sysobjects.name AS 表名, dbo.syscolumns.name AS 列名 FROM dbo.sysobjects INNER JOIN dbo.syscolumns ON dbo.sysobjects.id = dbo.syscolumns.id INNER JOIN dbo.systypes ON dbo.syscolumns.xtype = dbo.systypes.xtype WHERE (dbo.sysobjects.xtype = 'U') AND (dbo.systypes.name = 'varchar') ORDER BY 表名 OPEN curTemp FETCH NEXT FROM curTemp INTO @TableNameTemp,@FieldNameTemp WHILE @@FETCH_STATUS=0 BEGIN SET @SQL = 'INSERT INTO #R(TableName,FieldName) SELECT TOP 1 '''+@TableNameTemp+''','''+@FieldNameTemp+''' FROM ['+@TableNameTemp+'] WHERE ['+@FieldNameTemp+']='''+@Value+'''' EXEC(@SQL) FETCH NEXT FROM curTemp INTO @TableNameTemp,@FieldNameTemp END CLOSE curTemp DEALLOCATE curTemp SELECT * FROM #R DROP TABLE #R END
使用範例如下:
有了數據表及欄位名,替換admin為ADMIN就很簡單啦,直接REPLACE即可。好,本次分享就到此!