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

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- 王朝網路 版權所有