调用sql存储过程传参是很长的字符串请问用什么格式才不会报错啊

CREATEPROCEDURE[dbo].[Jfg_1]@dtdatetime,@allLinenamevarchar(500)ASselect*fromalllinew... CREATE PROCEDURE [dbo].[Jfg_1]
@dt datetime,
@allLinename varchar(500)
AS
select * from allline where date=@dt and name=@allLineName
GO
查询分析器 调用 exec jfg_1 '2012-12-12','北京1‘,'北京2’,'北京3‘要报错,我该怎么写才是对的?
展开
 我来答
szm341
2012-07-17
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
@allLinename nvarchar(max)
有汉字的用nvarchar,不确定具体多长的可以用最大值
存储过程执行时参数用","隔开,你的存储过程中用了两个参数
所以执行时只能写两个如exec jfg_1 '2012-12-12','北京1'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unitech2010
2012-07-17
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
exec jfg_1 '2012-12-12','北京1'
exec jfg_1 '2012-12-12','北京2'
exec jfg_1 '2012-12-12','北京3’
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cindyzhangl
2012-07-20
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
这是2个参数还是4个参数呢?如果是4个参数,那存储过程的@参数要改为4个;如果是2个参数,那么调用要写成exec Jfg_1 '2012-12-12',"'北京1‘,'北京2’,'北京3‘",日期后面的用"作为一个整体括起来,或者日期后面的参数分开执行。另外,还要注意大小写和中英文字符。 这个我在数据库里已经试过了,你可以再试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kj129
2012-07-17
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
有多长?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4efe45b
2012-07-17
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
exec jfg_1 '2012-12-12','''北京1'',''北京2'',''北京3'''
追问
是里面是双引号还是外面啊?
追答
都是单引号,但是如果在字符串当中包含单引号的话,就需要把单引号变成两个
比如
set @a = '长城' ,这个时候@a 的值是长城
set @a = '''长城''',这个时候@a的值是 '长城'

这样说能理解吗

PS:感觉你写的存储的意思应该不是传入这么一个值吧?你的意思是不是其实北京1是一个值,北京2是一个值,北京3是一个值呢

如果是的话,你的存储需要修改的
尝试改为这个

CREATE PROCEDURE [dbo].[Jfg_1]
@dt datetime,
@allLinename varchar(500)
AS
begin
declare @sql varchar(2000)
select @sql = 'select * from allline where date=''' + convert(varchar(10),@dt,120) + ''' and name in (' + @allLineName + ')'
exec(@sql)
end
GO

--执行
exec jfg_1 '2012-12-12','''北京1'',''北京2'',''北京3'''
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式