程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL 存儲時觸發不能使用USE怎麼辦?

SQL 存儲時觸發不能使用USE怎麼辦?

編輯:關於SqlServer


 大家都知道在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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved