在sql中组合过程和游标

时间:2016-06-09 04:17:57

标签: sql stored-procedures cursor procedure

新手在这里。

我正在尝试自学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

1 个答案:

答案 0 :(得分:0)

您的SELECT光标语句表示SELECT StaffName, StaffPosition,但您的FETCH语句与(或彼此)不匹配。

FETCH将把光标中的数据加载到内存变量中。因此,您需要为SELECT中指示的每个列提供一个变量。例如,如果你有

DECLARE @staffName VARCHAR(100)
DECLARE @staffPosition VARCHAR(100)

然后您可以用以下内容替换两者

FETCH NEXT FROM cur2 INTO @staffName, @staffPosition