ALTER PROCEDURE sp_BIXconfigure
@dealercode char(6),
@dealername char(6),
AS
Begin
INSERT INTO STGtable
SELECT *
FROM [@dealercode].[dbo].ACTMA,[@dealercode].[dbo].ACTMB B
End
小弟最近在寫一個sp程式,但是我宣佈變數,要傳入不同資料庫,執行處理處理
但會出現以下問題,似乎不能這樣傳入,不知有什麼方式可以改寫。請指教謝謝
訊息 208,層級 16,狀態 1,程序 sp_BIXconfigure,行 11
無效的物件名稱 '@dealercode.dbo.ACTMA'。
(1 個資料列受到影響)
茲說明修訂如下:
修訂您的程式碼如下:
<pre class="c" name="code">ALTER PROCEDURE sp_BIXconfigure
@dealercode char(6),
@dealername char(6)
AS
DECLARE @EXECSTR NVARCHAR(5000)
Begin
SET @EXECSTR = 'INSERT INTO STGtable ' +
'SELECT * ' +
' FROM [' + @dealercode + '].[dbo].ACTMA A, ' +
' [' + @dealercode + '].dbo].ACTMB B ' +
' WHERE A.xxxx=B.xxxx'
EXECUTE(@EXECSTR)
End
但, 建議您增加Where條件, 以免資料量太大影響效能. Where條件內容如果您不太會處理, 可以回應, 我再增補給您.
拜託幫幫忙
請參考:: EXEC
CREATE PROCEDURE usp_demo
@ids sysname
WITH EXECUTE AS 'dbo'
AS
EXEC(N'SELECT name FROM sysobjects WHERE id IN ('+ @ids + N')')
RETURN
GO