我試圖用下面的代碼做的是有它抓住所有的數據庫名稱,然後遍歷這些數據庫檢查,看看錶tblAdminLogin
存在,如果它不更新的用戶名「富」如何在OBJECT_ID中使用T-SQL變量來檢查表是否存在?
我的密碼一直使用select語句而不是更新,直到它正常工作。
declare @databases table
(
PK int IDENTITY(1,1),
dbid int,
name varchar(50)
)
insert into @databases(dbid, name) select dbid, name from master.dbo.sysdatabases
Declare @maxPK int; select @maxPK = MAX(PK) from @databases
Declare @pk int; Set @pk = 1
Declare @name varchar(50)
While @pk <= @maxPK
Begin
Select @name = name from @databases where [email protected]
if OBJECT_ID(''[email protected]+'.dbo.tblAdminLogin') IS NOT NULL
Begin
Select password from @name.dbo.tblAdminLogin where username = 'foo'
--Update @name.dbo.tblAdminLogin Set password='bar' where username = 'foo'
End
Set @pk = @pk + 1
End
問題的主要代碼是
Select @name = name from @databases where [email protected]
if OBJECT_ID(''[email protected]+'.dbo.tblAdminLogin') IS NOT NULL
Begin
Select password from @name.dbo.tblAdminLogin where username = 'foo'
--Update @name.dbo.tblAdminLogin Set password='bar' where username = 'foo'
End
編輯:新增T-SQL來冠軍,因爲我使用SQL Server
編輯:修正了錯字.dbl。到正確的.dbo。
我知道你選擇的答案,但要做到這一點,最好的辦法是明確使用'sp_msforeachdb'。當api提供一種方式時,使用它總是一個好主意。查看顯示如何使用'sp_msforeachdb'的答案 – Hogan 2011-06-04 13:47:15