您可以從程序中獲取表名。獲取存儲過程的程序表名
如下面的代碼:
Create Procedure [dbo].[sp_SelectAll]
@BankName nvarchar(50)
As
Begin
Select *
From @BankName
End
這是錯誤代碼。
還有另外一種方法嗎?
您可以從程序中獲取表名。獲取存儲過程的程序表名
如下面的代碼:
Create Procedure [dbo].[sp_SelectAll]
@BankName nvarchar(50)
As
Begin
Select *
From @BankName
End
這是錯誤代碼。
還有另外一種方法嗎?
,你可以不喜歡它:
EXEC( 'SELECT * FROM' + @BankName)
,但它不是好的做法是使用這個..
您可以瞭解更多有關動態SQL來自:
http://www.mssqltips.com/tip.asp?tip=1160
http://www.sqlteam.com/article/introduction-to-dynamic-sql-part-1
表不能被參數化。您必須編寫動態SQL,即生成SQL字符串並使用exec執行它。
EXEC( '選擇*' + @BankName)
試試這個
Create Procedure [dbo].[sp_SelectAll]
@BankName nvarchar(50)
As
Begin
EXEC('Select * from '+ @BankName)
End
你需要使用dynamic SQL
,使這項工作正常上班。
在生產代碼中使用`select *`通常是很糟糕的形式(除`EXISTS`測試外)。這個代碼還有另外一個不好的地方 - 無論你是在編寫一個可以返回大量不同類型結果集的存儲過程,或者你有多個具有相同結構的表。這些中的任何一個通常都是設計不佳的標誌。 – 2011-02-15 08:14:25