2011-02-15 41 views
4

您可以從程序中獲取表名。獲取存儲過程的程序表名

如下面的代碼:

Create Procedure [dbo].[sp_SelectAll] 
@BankName nvarchar(50) 

As 
Begin 
    Select * 
    From @BankName 
End 

這是錯誤代碼。

還有另外一種方法嗎?

+0

在生產代碼中使用`select *`通常是很糟糕的形式(除`EXISTS`測試外)。這個代碼還有另外一個不好的地方 - 無論你是在編寫一個可以返回大量不同類型結果集的存儲過程,或者你有多個具有相同結構的表。這些中的任何一個通常都是設計不佳的標誌。 – 2011-02-15 08:14:25

回答

0

表不能被參數化。您必須編寫動態SQL,即生成SQL字符串並使用exec執行它。

EXEC( '選擇*' + @BankName)

0

試試這個

Create Procedure [dbo].[sp_SelectAll] 
     @BankName nvarchar(50) 

     As 
     Begin 
      EXEC('Select * from '+ @BankName) 
     End 

你需要使用dynamic SQL,使這項工作正常上班。