首页 > 解决方案 > 在嵌入式 SQL 的打开游标中使用主机数组

问题描述

我有这个嵌入式 SQL 代码:

EXEC SQL
  OPEN MY_CURSOR USING :a1
END-EXEC

其中 a1 是包含 20 个项目的数组,但我不知道我需要多少主机变量。它可以是 1 到 20。如果我以这种方式使用它,而实际上我只使用数组中的 5 个项目,我会收到此错误:

SQLCODE:-10000,SQLSTATE:24000,SQLERRMC:无效游标状态

有没有可能如何在 OPEN CURSOR 部分发送数组中使用的项目数?或者我必须使用具有确切数量的项目的数组?

标签: sql-server-2012cobolembedded-sql

解决方案


“OPEN CURSOR”语句中的主变量是指 where 子句中的参数。

未在 OPEN 时返回数据。

相反,您可以通过发出“FETCH INTO :var1, :var2 ...”来获取每一行,这与单行选择非常相似。

在此处查看文档: https ://docs.microsoft.com/en-us/sql/t-sql/language-elements/fetch-transact-sql?view=sql-server-ver15


推荐阅读