我在我的SQL中有一些硬編碼的數據庫值,我需要轉換爲變量,我已經在地方聲明瞭它們,但是我需要將Production2更改爲下面的@Source_Database_Name變量,但是我不知道如何將它放入信息中架構後它沒有得到語法錯誤如何爲硬編碼數據庫聲明一個變量?
IF EXISTS(SELECT * FROM Production2.INFORMATION_SCHEMA.COLUMNS
我在我的SQL中有一些硬編碼的數據庫值,我需要轉換爲變量,我已經在地方聲明瞭它們,但是我需要將Production2更改爲下面的@Source_Database_Name變量,但是我不知道如何將它放入信息中架構後它沒有得到語法錯誤如何爲硬編碼數據庫聲明一個變量?
IF EXISTS(SELECT * FROM Production2.INFORMATION_SCHEMA.COLUMNS
我想你可以做到這一點的唯一方法是動態SQL生成(不幸)。實際上有很多原因(從數據庫引擎的角度來看)不允許用戶以您想要的方式參數化查詢。坐在我頭上的是,它將無法驗證您的查詢語法(無法知道您指的是實際存在的內容)。
如果您在談論「能夠針對不同數據庫執行同一組SQL」,並且您實際上是通過代碼(.NET /任何東西)執行此SQL,那麼您可以實現相同結果是通過在連接字符串中指定目標數據庫(即通過更改設置數據庫的級別 - 不是在[sql]腳本中,而是在某個外部點)。
我同意AlexS。 –
這只是Transact-SQL存儲在.sql文件中嗎?因爲SSMS中的'sqlcmd'和'sqlcmd mode'允許你使用變量。否則,它是動態的SQL /同義詞/鏈接服務器。如果這些是存儲過程並被部署到不同的環境中,您還可以使用類似SQL Server數據工具的東西來管理它們。 SQL Server數據工具包含可在T-SQL中使用的變量。 –