'DECLARE' 定义的变量使用有错 sql 为什么?

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:05:22
create procedure selectDiscourseBySynthesis
(
@Author nvarchar(50),
@Title nvarchar(50),
@KeyWords nvarchar(50),
@Type nvarchar(50)
)
as
DECLARE @sql nvarchar(150)
set @sql='where 1=1'+' and '
if @Type<>null
set @sql=@sql+'Type='+@Type+' and '
if @Author<>null
set @sql=@sql+'Author ' +'like'+ '%'+@Author+'%'+' and '
if @Title<>null
set @sql=@sql+'Title ' +'like'+ '%'+@Title+'%'+' and '
if @KeyWords<>null
set @sql=@sql+'KeyWords ' +'like'+ '%'+@KeyWords+'%'+' and '
select Author,Title,KeyWords,Abstract,Type,FilePath FROM Discourse @sql

服务器: 消息 170,级别 15,状态 1,过程 selectDiscourseBySynthesis,行 19
第 19 行: '@sql' 附近有语法错误。

create procedure selectDiscourseBySynthesis
(
@Author nvarchar(50),
@Title nvarchar(50),
@KeyWords nvarchar(50),
@Type nvarchar(50)
)
as
DECLARE @sql nvarchar(150)
set @sql='where 1=1'+' and '
if @Type<>null
set @sql=@sql+'Type='+@Type+' and '
if @Author<>null
set @sql=@sql+'Author ' +'like'+ '%'+@Author+'%'+' and '
if @Title<>null
set @sql=@sql+'Title ' +'like'+ '%'+@Title+'%'+' and '
if @KeyWords<>null
set @sql=@sql+'KeyWords ' +'like'+ '%'+@KeyWords+'%'+' and '
exec('select Author,Title,KeyWords,Abstract,Type,FilePath FROM Discourse'+ @sql)
--这样写试试看。

第19行这样写

exec("select Author,Title,KeyWords,Abstract,Type,FilePath FROM Discourse "+ @sql)

你有了AS 为啥还要DECL