帮忙看看我这存储过程有什么问题?谢谢!

freegoal 2005-12-23 04:19:04
存储过程为:
CREATE PROCEDURE [dbo].[pr_getParentLots]
@var1 nvarchar(4000),
@var2 int
AS

SELECT LotNumber,COUNT(SerialNumber) FROM tbSerialNumber WHERE SerialNumber IN (@var1) GROUP BY LotNumber

GO

以下是调用这个存储过程(但是没有正确结果返回):
DECLARE @RC int
DECLARE @var1 nvarchar(4000)
DECLARE @var2 int
SELECT @var1 = N'''0544F1507'',''0544F1455'',''0544F1448'',''0544F1361'',''0544F1348'',''0544F1260'''
SELECT @var2 = 6
EXEC @RC = [eplist].[dbo].[pr_getParentLots] @var1, @var2
DECLARE @PrnLine nvarchar(4000)
PRINT 'Stored Procedure: eplist.dbo.pr_getParentLots'
SELECT @PrnLine = ' Return Code = ' + CONVERT(nvarchar, @RC)
PRINT @PrnLine
不知道为什么没有返回结果?

如果我直接执行以下SQL语句,它是有结果返回的:
SELECT LotNumber, COUNT(SerialNumber) AS Expr1
FROM dbo.tbSerialNumber
WHERE (SerialNumber IN ('0544F1507', '0544F1455', '0544F1448', '0544F1361',
'0544F1348', '0544F1260'))
GROUP BY LotNumber


哪位能够帮我看看哪里出了问题?谢谢!
...全文
158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
新鲜鱼排 2005-12-26
  • 打赏
  • 举报
回复
DECLARE @var1 nvarchar(4000)
set @var1 = N'''0544F1507'',''0544F1455'',''0544F1448'',''0544F1361'',''0544F1348'',''0544F1260'''
exec ('SELECT LotNumber,COUNT(SerialNumber) FROM tbSerialNumber WHERE SerialNumber IN ('+@var1+') GROUP BY LotNumber')


zsyp 2005-12-26
  • 打赏
  • 举报
回复
你用insert 临时表 exec 存储过程
这样的语句试试
ljian_mail 2005-12-25
  • 打赏
  • 举报
回复
应该用动态sql
浩方软件HFWMS 2005-12-24
  • 打赏
  • 举报
回复
有点乱
pbsql 2005-12-23
  • 打赏
  • 举报
回复
CREATE PROCEDURE [dbo].[pr_getParentLots]
@var1 nvarchar(4000),
@var2 int
AS
exec ('SELECT LotNumber,COUNT(SerialNumber) FROM tbSerialNumber WHERE SerialNumber IN ('+@var1+') GROUP BY LotNumber')
GO
--调用:
create table #LotList(LotNumber nvarchar(50),sncount int)
insert into #LotList
exec pr_getParentLots N'''0544F1507'',''0544F1455'',''0544F1448'',''0544F1361'',''0544F1348'',''0544F1260''',6
declare @LotList table(LotNumber nvarchar(50),sncount int)
insert into @LotList select * from #LotList
select * from @LotList
drop table #LotList
freegoal 2005-12-23
  • 打赏
  • 举报
回复
to winternet(冬天):
我实际上是向将查询结果插入到一个表变量中,如下:
declare @LotList table(LotNumber nvarchar(50),sncount int)
insert into @LotList
SELECT LotNumber,COUNT(SerialNumber) FROM tbSerialNumber WHERE SerialNumber IN (@var1) GROUP BY LotNumber

如果用exec就不能直接插入表变量中啦,有什么好办法吗?
另外,我上面的语句在语法检查时没有出错,为什么就不起作用呢?谢谢!
winternet 2005-12-23
  • 打赏
  • 举报
回复
SELECT LotNumber,COUNT(SerialNumber) FROM tbSerialNumber WHERE SerialNumber IN (@var1) GROUP BY LotNumber

----->
exec ('SELECT LotNumber,COUNT(SerialNumber) FROM tbSerialNumber WHERE SerialNumber IN ('+@var1+') GROUP BY LotNumber')
lw1a2 2005-12-23
  • 打赏
  • 举报
回复
你那个@var2是干吗的,要返回多少行不是这么做的

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧