新手在这里。
我正在尝试自学SQL。 现在,我在组合过程和光标方面遇到了问题。
以下是案例
创建名为'sp4'的过程,该过程从用户的输入接收StaffName 显示名称的每个员工的StaffName和StaffPosition 包含用户输入的单词。 (创建过程,声明游标等)
这是我试过的代码
CREATE PROCEDURE sp4 (@name VARCHAR(100))
AS
DECLARE cur2 CURSOR
SCROLL
FOR
SELECT StaffName, StaffPosition
FROM MsStaff
OPEN cur2
DECLARE @pointer AS VARCHAR(100)
FETCH NEXT FROM cur2 INTO @pointer
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT StaffName, StaffPosition
FROM MsStaff
WHERE @pointer = @name
AND StaffName LIKE '%' + @pointer + '%'
FETCH NEXT FROM cur2 INTO @name
END
CLOSE cur2
DEALLOCATE cur2
答案 0 :(得分:0)
您的SELECT
光标语句表示SELECT StaffName, StaffPosition
,但您的FETCH
语句与(或彼此)不匹配。
FETCH
将把光标中的数据加载到内存变量中。因此,您需要为SELECT
中指示的每个列提供一个变量。例如,如果你有
DECLARE @staffName VARCHAR(100)
DECLARE @staffPosition VARCHAR(100)
然后您可以用以下内容替换两者:
FETCH NEXT FROM cur2 INTO @staffName, @staffPosition