0
我創建一個存儲過程,如下ERROR在創建視圖中使用if條件
ALTER PROCEDURE [dbo].[spSUPPLIERSOA]
@CHARTNUMBER1 INT = NULL,
@CHARTNUMBER2 INT = NULL,
@ASONDATE DATETIME = NULL
AS
BEGIN
IF OBJECT_id('vwSUPPLIERSOA') IS NOT NULL
DROP VIEW vwSUPPLIERSOA
GO
CREATE VIEW vwSUPPLIERSOA AS
SELECT GLJRNDTL.JOURNALCODE, GLJRNDTL.JOURNALNUM, GLJRNDTL.POSTEDDATE, APINVHED.CHARACTER01, APINVHED.INVOICENUM, APINVHED.INVOICEDATE, APINVHED.DUEDATE,
GLJRNDTL.TRANSAMT, APINVHED.PAYAMOUNTS, APINVHED.DOCPAYAMOUNTS, APINVHED.INVOICEBAL, APINVHED.DOCINVOICEBAL, APINVHED.CURRENCYCODE, APINVHED.EXCHANGERATE
FROM GLJRNDTL
LEFT OUTER JOIN APINVHED
ON APINVHED.INVOICENUM = GLJRNDTL.APINVOICENUM
WHERE GLJRNDTL.GLCHART BETWEEN @CHARTNUMBER1 AND @CHARTNUMBER2 AND GLJRNDTL.POSTEDDATE < @ASONDATE
END
我得到錯誤信息如下
Msg 102, Level 15, State 1, Procedure spSUPPLIERSOA, Line 8
Incorrect syntax near 'vwSUPPLIERSOA'.
Msg 137, Level 15, State 2, Procedure vwSUPPLIERSOA, Line 7
Must declare the scalar variable "@CHARTNUMBER1".
請讓我知道我得到錯誤的。
從一個存儲過程中創建一個視圖必須使用動態SQL。你確定你需要這樣做 - 是否有理由讓程序改變視圖定義?你是否有更好的服務?一個可以直接接受所需參數的表值函數? –