【发布时间】:2018-11-29 13:16:36
【问题描述】:
我用光标得到了这个过程
CREATE PROCEDURE usp_Inventario
AS
DECLARE @Id int, @Nombre varchar(255), @precio decimal, @st int, @inv int
SET @inv = 0
DECLARE cproducto CURSOR FOR
SELECT P.ProductID, P.ProductName, P.UnitPrice, P.UnitsInStock
FROM Products P
和
OPEN cproducto
FETCH cproducto INTO @id, @Nombre, @precio, @st
WHILE (@@FETCH_STATUS = 0)
BEGIN
PRINT Str(@id) + space(5) + str(@nombre) + space(5) + Str(@precio) + space(5) + Str(@st)
SET @inv += @st
FETCH cproducto INTO @id, @Nombre, @precio, @st
END
CLOSE cproducto
DEALLOCATE cproducto
PRINT 'Inventario de Productos:' + Str(@inv)
我收到这个错误
必须声明标量变量“@id”
多次,谁能告诉我我做错了什么?
【问题讨论】:
-
请说明您使用的是什么关系型数据库。
-
SQL SERVER 2017 使用 NORTHWND 数据库
-
您的数据库排序规则是否区分大小写?你用大写声明了
@Id,但使用了@id。 -
不区分大小写
-
您粘贴的查询不会产生该错误(只要顶部和底部在同一范围内)...
标签: sql sql-server stored-procedures database-cursor