sql server 数据库 存储过程 必须声明标量变量 错误

ALTERPROCEDURE[dbo].[AllStatisticsSearch1]@s_StartTimevarchar(50)ASBEGINdeclare@mysql... ALTER PROCEDURE [dbo].[AllStatisticsSearch1]
@s_StartTime varchar(50)

AS
BEGIN

declare @mysql varchar(5000)

set @mysql='SELECT [UserList].id,PeopleName'

set @mysql=@mysql+' FROM [UserList] left join WarList on WarList.PeopleID = UserList.ID '
set @mysql=@mysql+' and datediff(day,@s_StartTime,WarList.WarDate)>=0'--开始日期
set @mysql=@mysql+'where 1=1'

exec (@mysql)

出错:必须声明标量变量 "@s_StartTime"。
展开
 我来答
ttpsan520
推荐于2018-03-07 · TA获得超过404个赞
知道小有建树答主
回答量:312
采纳率:100%
帮助的人:314万
展开全部
set @mysql=@mysql+' FROM [UserList]  left join WarList on WarList.PeopleID = UserList.ID '
 set @mysql=@mysql+' and datediff(day,'+@s_StartTime+',WarList.WarDate)>=0'--开始日期
 set @mysql=@mysql+'where 1=1'

exec (@mysql)
g799814268
2013-05-30 · 超过20用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:53.4万
展开全部
1、首先在声明在存储后面的变量要用括号括起来
2、既然begin了,后面就一定要end
3、执行存储过程执行的是存储过程的名,而不是执行你声明得变量

我写了一个简单例子你看一下:
ALTER PROCEDURE proc_stu(
@id int
)
AS
BEGIN

declare @mysql varchar(5000)

set @mysql='SELECT * from student where @id=id'
end
exec proc_stu 2
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式