2016-02-25 74 views
0

隨着下面的代碼,我不斷收到以下錯誤附近有語法錯誤:關鍵字「聲明」附近關鍵字'DECLARE'語法不正確。關鍵字「AS」

不正確的語法。
關鍵字'AS'附近的語法不正確。

任何援助將不勝感激!

DROP PROCEDURE [dbo].[csp_WellTestValidationResultsTEST_GetData] 
GO 
CREATE PROCEDURE [dbo].[csp_WellTestValidationResultsTEST_GetData] 

DECLARE @ColumnName varchar(max);  --Column Name that Maps to AF Attribute 
DECLARE @ColumnValue varchar(max);  --Specific Value for that Column 
DECLARE @LeftNumber varchar(50) = SUBSTRING(@ColumnValue,0,CHARINDEX('-',@ColumnValue,0)); 
DECLARE @RightNumber varchar(50) = SUBSTRING(@ColumnValue,CHARINDEX('-',@ColumnValue,0)+1,LEN(@ColumnValue)); 
DECLARE @API varchar(50) = SUBSTRING(@ColumnName,0,CHARINDEX('-',@ColumnName,0)); 


AS 
BEGIN 
SET NOCOUNT ON; 

IF (@ColumnName = 'API14-2') 
     Exec('Select * from dbo.SSIS_RTRM_WellTestValidationResults where '[email protected]+' = '[email protected]+' OR '[email protected]+' = '[email protected]+' order by TestDate Desc') 
Else 
    Select * From dbo.SSIS_RTRM_WellTestValidationResults where WellId = '' 
    END 
+5

如果您使用的是SQL Server,則'declare'位於'begin'之後。 –

回答

0

爲「戈登·利諾夫」指出的那樣,你的創造過程中的語句應該是

CREATE PROCEDURE [dbo].[csp_WellTestValidationResultsTEST_GetData] 

AS 
BEGIN 
SET NOCOUNT ON; 

DECLARE @ColumnName varchar(max);  --Column Name that Maps to AF Attribute 
........ 

在另一方面,我不知道,如果你可以聲明並在同一語句像你一樣賦值,可能需要更換到:

DECLARE @LeftNumber varchar(50); 
SET @LeftNumber = SUBSTRING(@ColumnValue,0,CHARINDEX('-',@ColumnValue,0)); 

等等

+0

聲明和分配取決於SQL Server的版本。 – Morpheus

1

要通過雜物統計局的sporc,使用語法CREATE PROCEDURE {schema.procedure_name} {@變量1} {variable1_data_type},{@變量2} {} variable2_data_type AS { 此存儲過程}

如果你想爲一個變量的默認值這也使變量可選,{variable} {vairable_data_type} = {variable_default_value}

這隻適用於調用存儲過程時傳遞的變量。在存儲區中聲明的存儲區中定義的任何變量。

CREATE PROCEDURE [dbo].[csp_WellTestValidationResultsTEST_GetData] 
@ColumnName varchar(max);  --Column Name that Maps to AF Attribute 
,@ColumnValue varchar(max);  --Specific Value for that Column 
AS 
DECLARE @LeftNumber varchar(50) = SUBSTRING(@ColumnValue,0,CHARINDEX('-',@ColumnValue,0)); 
DECLARE @RightNumber varchar(50) = SUBSTRING(@ColumnValue,CHARINDEX('-',@ColumnValue,0)+1,LEN(@ColumnValue)); 
DECLARE @API varchar(50) = SUBSTRING(@ColumnName,0,CHARINDEX('-',@ColumnName,0)); 
相關問題