打开游标。
大纲OPEN cursor-name
参数
-
cursor-name
- 游标的名称,已经声明过了。
游标名称是在DECLARE
语句中指定的。
游标名称区分大小写。
OPEN
语句根据游标的DECLARE
语句中指定的参数打开游标。
一旦打开,就可以获取游标。
打开的游标必须关闭。
- 试图打开未声明的游标会出现
SQLCODE -52
错误。 - 试图打开已经打开的游标会导致
SQLCODE -101
错误。 - 试图获取或关闭未打开的游标将导致
SQLCODE -102
错误。
成功的OPEN
设置SQLCODE = 0
,即使结果集是空的。
作为SQL
语句,这只在嵌入式SQL
中支持。
通过ODBC
使用ODBC API
支持等价的操作。
下面的嵌入式SQL示例显示了一个正在打开和关闭的游标(名为EmpCursor
):
ClassMethod Open()
{
s name = "LastName,FirstName",state = "##"
&sql(
DECLARE EmpCursorO CURSOR FOR
SELECT Name, Home_State
INTO :name, :state FROM Sample.Person
WHERE Home_State %STARTSWITH 'A'
)
w !,"BEFORE: Name=",name," State=",state
&sql(OPEN EmpCursorO)
if SQLCODE '= 0 {
w "打开错误: ",SQLCODE
q
}
n %ROWCOUNT,%ROWID
for {
&sql(FETCH EmpCursorO)
q:SQLCODE
w !,"DURING: Name=",name," State=",state
}
w !,"FETCH status SQLCODE=",SQLCODE
w !,"获取的行数 = ",%ROWCOUNT
&sql(CLOSE EmpCursorO)
w !,"AFTER: Name=",name," State=",state
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Open()
BEFORE: Name=LastName,FirstName State=##
DURING: Name=Quixote,Terry J. State=AR
DURING: Name=Xerxes,Angelo P. State=AL
DURING: Name=Gore,Alfred M. State=AZ
DURING: Name=Ahmed,Elmo X. State=AZ
DURING: Name=Press,Juanita Q. State=AZ
DURING: Name=DeLillo,Olga A. State=AR
DURING: Name=Klein,Richard K. State=AL
DURING: Name=Lopez,Ralph W. State=AZ
DURING: Name=Yu,Edward Y. State=AR
DURING: Name=Underman,Maria P. State=AL
DURING: Name=Vanzetti,Alexandra O. State=AL
DURING: Name=Koivu,Joshua J. State=AR
FETCH status SQLCODE=100
获取的行数 = 12
AFTER: Name=Koivu,Joshua J. State=OH