当sql返回多个值时,将在host变量中存储什么值

时间:2014-11-13 10:23:01

标签: db2 cobol mainframe

在COBOLDB2程序中,获取-811 sqlcode后,将在主变量中存储什么值。 (即查询返回的多行)。

2 个答案:

答案 0 :(得分:2)

因为SQLCODE< 0表示存在错误。请参阅此链接:IBM SQL Tutorial

  

您可以使用此类语句将单行数据检索到主变量中。单行可以根据需要具有尽可能多的列。如果查询生成多行数据,则数据库服务器无法返回任何数据。它会返回错误代码。

答案 1 :(得分:2)

实际上,如果您只使用这样的查询,则无法获取任何数据。在这种情况下,您可以使用CURSOR和FETCH语句。这样,您可以逐个读入宿主变量返回的行。 简而言之,这就是这样的:

declare cursor curs_name for select .... from....where .....
open curs_name
fetch curs_name into host_var
close curs_name 

所有这些说明都包含在EXEC SQL ........... END EXEC之间。当然,你必须为每一行获取一次。您可以检查SQLCODE以查看是否到达光标的末尾。你寻找SQLCODE 100.