【问题标题】:Error when creating stored procedure SQL Server 2008创建存储过程 SQL Server 2008 时出错
【发布时间】:2016-10-18 01:24:56
【问题描述】:

我遇到了一个错误

SQL 错误 (102): ')' 附近的语法不正确

尝试将以下查询保存为存储过程时。

查询本身(删除“创建过程”和开始/结束工作正常)并且没有给出语法错误,我已经搜索了所有内容,但是我有点卡住了,这让我发疯了。

CREATE PROCEDURE "downdaly_file_info"()
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
begin
declare @file_name varchar(75)
declare @agent_number varchar(15)
declare @aid_batch varchar(15)
declare @aid_agent varchar(15)
declare @Policy_Company varchar(2)
declare @Policy_Province2 varchar(2)
declare @akey varchar(30)

select @aid_batch=aid from audit with(nolock) where atype='OUT-BATCH' and akey like '%'+@file_name+'%'
print @aid_batch
select @aid_agent=aid from audit with(nolock) where atype='OUT-AGENT' and aid like @aid_batch+'-%' and akey=@agent_number
print @aid_agent

select @akey=akey from audit with (nolock) where aid like @aid_agent+'-%' and atype='OUT-POLICY'

SET @Policy_Company=substring(@akey,15,2)
print @Policy_Company

SET @Policy_Province2 =
CASE
WHEN @Policy_Company = 'CG' THEN substring(@akey,19,2)
WHEN @Policy_Company = 'TR' THEN substring(@akey,20,2)
WHEN @Policy_Company = 'EL' THEN substring(@akey,20,2)
WHEN @Policy_Company = 'IC' THEN substring(@akey,22,2)
WHEN @Policy_Company = 'PI' THEN substring(@akey,20,2)
WHEN @Policy_Company = 'S&' THEN substring(@akey,20,2)
END
print @Policy_Province2

insert into #downdaly_file_data (Name_Of_File,
Agent_Number,
Policy_Number,
Transaction_Number,
Policy_Province,
Trans_Code,
Policy_Company,
Policy_Province2,
Eff_Date_Real
)
select @file_name,
@agent_number,
substring(akey,1,12),
SUBSTRING(adata,20,3),
substring(adata,171,2),
substring(adata,32,3),
@Policy_Company,
@Policy_Province2,
substring(adata,139,6)

from audit with (nolock)
where aid like @aid_batch+'%' and atype='OUT-POLICY'
end

【问题讨论】:

标签: sql sql-server stored-procedures


【解决方案1】:

您不能在程序中添加这些信息

LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''

这里是可能的选项

CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]   
    [ { @parameter [ type_schema_name. ] data_type }  
        [ VARYING ] [ = default ] [ OUT | OUTPUT | [READONLY]  
    ] [ ,...n ]   
[ WITH <procedure_option> [ ,...n ] ]  
[ FOR REPLICATION ]   
AS { [ BEGIN ]

此外,当您没有 parameters 时,不要添加 括号。这是正确的方法

CREATE PROCEDURE Downdaly_file_info
AS
  BEGIN
  ---SQL statment
  END 

【讨论】:

  • 是的,我对此完全陌生,但是您提到的“正确方式”效果很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-07-28
  • 2012-02-28
  • 2012-05-25
  • 2018-12-21
  • 2015-01-26
  • 1970-01-01
  • 2016-05-25
  • 1970-01-01
相关资源
最近更新 更多