2017-01-25 21 views
0

當我試圖做一個存儲過程,這將使用變量調用sp_rename

  1. 刪除主鍵
  2. 重命名,其中主鍵被設置
  3. 列名創建新的主鍵

我用點號2

我想柱與重命名掙扎與傳遞給存儲過程是這樣的參數:

EXEC sp_rename '[' + @SCHEMA + '].[' + @TABLE + '].[ID]' , 'Id', 'COLUMN' 

可是這樣一來,我得到這個錯誤:

Procedure or function 'sp_RENAME' expects parameter '@newname', which was not supplied.

如何使用sp_rename帶參數?

回答

1

嘗試這樣

DECLARE @SCHEMA NVARCHAR(30)='your schema name' 
DECLARE @TABLE NVARCHAR(30)='table Name' 
DECLARE @OLD NVARCHAR(30) = '[' + @SCHEMA + '].[' + @TABLE + '].[ID]' 
EXEC sp_rename @OLD, 'Id' 
1

的問題不在於sp_rename本身,它實際上是用EXEC問題。

對於要通過每個參數,可能會提供一個(字面某種),一個可變關鍵字DEFAULT。你可能不會通過的是表達式,它計算一個值。

[ { EXEC | EXECUTE } ] 
    { 
     [ @return_status = ] 
     { module_name [ ;number ] | @module_name_var } 
     [ [ @parameter = ] { value 
          | @variable [ OUTPUT ] 
          | [ DEFAULT ] 
          } 
     ] 
     [ ,...n ] 
     [ WITH <execute_option> [ ,...n ] ] 
    } 
[;] 

這一切都意味着,如果你想計算的東西,你需要做的是作爲單獨的聲明(S),並存儲在一個變量計算的結果是,EXEC之前,如圖所示在JaydipJ's answer