【发布时间】:2019-02-08 10:12:50
【问题描述】:
我是这个存储过程的新手,我的问题与游标输出参数有关。游标输出参数和普通的存储过程(比如它只是一个变量或者它影响查询的结果或性能)有什么区别?
我使用的是 SQL Server 2014。创建存储过程我使用了快捷键 alt+k、alt+x。在我选择存储过程后的列表中,它要求选择存储过程类型:
- 创建过程基本模板
- 使用游标输出参数创建过程
- 使用输出参数创建过程。
我无法理解第二种存储过程类型。我试图谷歌但没有得到足够的信息。任何在这里帮助我理解的人将不胜感激。我附上了第二个存储过程类型示例脚本
CREATE PROCEDURE dbo.Sample_Procedure
@sample_procedure_cursor CURSOR VARYING OUTPUT
AS
SET @sample_procedure_cursor = CURSOR FOR
select 1
OPEN @sample_procedure_cursor
RETURN 0
我只是想了解使用“光标变化输出”关键字而不是使用“@variable datatype;”是否有任何其他我看不到的输出
【问题讨论】:
-
为什么需要这个?我没有听说过游标输出参数。但是您可以创建一个内部有光标的过程...
-
在 sql server 查询窗口中使用 ALT+S 和 ALT+X 然后在列表中选择存储过程。然后你会看到这三种类型。我想弄清楚我的 SP 概念。在我看到这个之前,我觉得我很了解 SP 但这让我很好奇。
-
我不知道。谢谢我学到了新东西。让我检查一下我是否能理解文档
-
你为什么要返回一个游标?您不需要返回游标来返回结果。
-
@DeepakKavin,虽然这可能是一个很好的学习练习,但请注意,实际上 SQL Server 中很少使用游标参数。我经常看到 T-SQL 代码中的那些从需要游标来检索结果的其他 DBMS 产品迁移。 SQL Server 本机将行流式传输到客户端,而不需要服务器端游标。通常最好使用基于集合的处理并避免使用游标。
标签: sql-server database stored-procedures database-cursor