2016-02-25 289 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)); 
相关问题