C#问题 我调用存储过程之后老出现like附近有语法错误

USE[E_Consumption]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERproc[dbo].[cout]@st... USE [E_Consumption]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[cout]
@strwhere varchar(1500)=''
as
declare @strSQL varchar(5000) -- 主语句
begin
set @strSQL='select count(*)from P_GoodsConsume where'+@strwhere
end
exec (@strSQL)
存储过程本身是可以执行的 我执行存储过程输入参数 conside like '%55%' 提示like附近有语法错误
展开
 我来答
xu3180497
推荐于2016-06-13 · TA获得超过1659个赞
知道小有建树答主
回答量:390
采纳率:66%
帮助的人:196万
展开全部
declare @strSQL varchar(5000), @strwhere varchar(100)       -- 主语句
set @strwhere = 'name like ''%55%''' --只有这样才能得到正确的执行结果
begin
set @strSQL='select count(*)from P_GoodsConsume where '+ @strwhere
print @strSQL
exec(@strSQL)
end

问题在于你传的参数不对,你按照上面的参数传输过去试试。

追问
我的参数也是手动输入的 所以没有错误 ,你的也不能解决我的问题!@strwhere = N'ConsumeOrder like ''%55%''' 我执行存储过程之后参数是这样
追答

我终于知道你的问题了,你的问题在于你的存储过程创建的时候:

set @strSQL='select count(*)from P_GoodsConsume where'+@strwhere

这里面where 后面少了一个空格。正确的应该是

set @strSQL='select count(*)from P_GoodsConsume where '+@strwhere

因为少了空格,所以你最后执行的时候其实是执行这个东西:

select count(*)from P_GoodsConsume whereconside like '%55%' --少了个空格

正确的是:

select count(*)from P_GoodsConsume where conside like '%55%'

 可见,粗心是多么的要不得啊!

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
N多的肉
2014-04-29 · TA获得超过3541个赞
知道小有建树答主
回答量:2260
采纳率:34%
帮助的人:618万
展开全部
你可以不用直接exec(@strSQL)
你先把这个@strSQL的值获取到,看看构成的SQL语句到底是什么,并且把这句SQL放到查询分析器里执行一下,看看能否执行,再找错误。
更多追问追答
追问
我这个存储过程是可以执行的,
USE [E_Consumption]
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[cout]
@strwhere = N'conside like ''%55%'''

SELECT 'Return Value' = @return_value

GO
执行之后出现like附近有语法错误 一行受影响
追答
你看看是不是引号没用对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lastoco
2014-04-29 · TA获得超过121个赞
知道小有建树答主
回答量:312
采纳率:100%
帮助的人:222万
展开全部

问题可能出在你的引号吧。

set @strSQL='select count(*)from P_GoodsConsume where'+@strwhere

单引号到where就没了。后面的like有出现了一对单引号

追问
我存储过程中有声明@strwhere varchar(1500)=''是存在的   存储过程没有错误提示可以执行,参数有误
追答

存储过程没问题,但是语句有问题。

你在where后面+个空格试试

set @strSQL='select count(*)from P_GoodsConsume where '+@strwhere
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式