首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程调用出错,该怎么解决

2012-03-19 
存储过程调用出错CREATEprocinfo@infonumvarchar(20),@infotablevarchar(20),@infotypevarchar(20),@intyp

存储过程调用出错
CREATE   proc   info
@infonum   varchar(20),
@infotable   varchar(20),
@infotype   varchar(20),
@intype   varchar(20),
@infoid   varchar(20)
as
declare   @sql   varchar(100)
set   set   @sql   =   '   select   top   '   +   @infonum   +   '   *   from   '   +   @infotable   +   '   where   '   +   @infotype   +   '   =   ( ' ' '   +   @intype   +   ' ' ')   order   by   '   +   @infoid+   '   desc '
EXEC(@sql)
GO

我这样调用出错
exec   dgdcc_news_info   '10 ', 'news ',datediff(day,   ptime,   getdate()), '1 ', 'ptime '
错误如下:
服务器:   消息   170,级别   15,状态   1,行   1
第   1   行:   'day '   附近有语法错误。
谢谢!

[解决办法]
alter proc info
@infonum varchar(20),
@infotable varchar(20),
@infotype varchar(100),--长度不够
@intype varchar(20),
@infoid varchar(20)
as
declare @sql varchar(100)
--有两个set
set @sql = ' select top ' + @infonum + ' * from ' + @infotable + ' where ' + @infotype + ' = ( ' ' ' + @intype + ' ' ') order by ' + @infoid+ ' desc '
print(@sql)
GO

--1.存储过程名写错
--2.传参数时加引号
exec info '10 ', 'news ', 'datediff(day, ptime, getdate()) ', '1 ', 'ptime '

热点排行