| 導購 | 订阅 | 在线投稿
分享
 
 
 

SQL存儲過程和觸發不能使用USE的應對方法

2008-08-16 07:22:22  編輯來源:互聯網  简体版  手機版  移動版  評論  字體: ||
 

大家都知道在SQL的存儲過程,觸發中不能使用USE。

怎麽辦呢,當然可以直接用[databasename].[user].

如sp_adduser等。

之前看到一篇文章,我測試了有問題。

原文:

這裏提供一個解決方案:

使用Exec(ute)語句來改變當前數據庫,不過要注意的是,數據庫環境的更改只在Execute語句結束前有效,所以你必須把

後面的語句和Execute放到一起。Example:

create proc test

as

exec('use pubs') exec sp_adduser 'test'

go

exec test

我自己試了一下,根據下面的語句執行沒有問題:

使用Exec(ute)語句來改變當前數據庫。

如下:

CREATE PROCEDURE cs

AS

BEGIN

exec('use sjdbmis; select plucode from txtplu')

END

GO

又如:

CREATE PROCEDURE cs

AS

BEGIN

exec('use sjdbmis; exec sp_adduser ''test''')

END

GO

 
大家都知道在SQL的存儲過程,觸發中不能使用USE。 怎麽辦呢,當然可以直接用[databasename].[user].[tablename]這樣來訪問,但是某些語句必須在當前數據庫下執行,比 如sp_adduser等。 之前看到一篇文章,我測試了有問題。 原文: 這裏提供一個解決方案: 使用Exec(ute)語句來改變當前數據庫,不過要注意的是,數據庫環境的更改只在Execute語句結束前有效,所以你必須把 後面的語句和Execute放到一起。Example: create proc test as exec('use pubs') exec sp_adduser 'test' go exec test 我自己試了一下,根據下面的語句執行沒有問題: 使用Exec(ute)語句來改變當前數據庫。 如下: CREATE PROCEDURE cs AS BEGIN exec('use sjdbmis; select plucode from txtplu') END GO 又如: CREATE PROCEDURE cs AS BEGIN exec('use sjdbmis; exec sp_adduser ''test''') END GO
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有