prepare

EGL prepare 语句指定一个 SQL PREPARE 语句,后者包含(可选)只有在运行时才知道的详细信息。通过运行 EGL execute 语句或者(如果 SQL 语句返回结果集的话)通过运行 EGL openget 语句来运行预编译 SQL 语句。


预编译语句的语法图
preparedStatementID
一个标识,它使 prepare 语句与 executeopenget 语句相关。
stringExpression
一个字符串表达式,它包含有效的 SQL 语句。
SQL record name
SQL 记录的名称。指定此名称有两个好处:
  • EGL 编辑器提供一个对话框,以根据您指定的规范来派生 SQL 语句
  • 在运行 prepare 语句之后,可以针对 I/O 错误值来测试记录名,以确定该语句是否成功,如以下示例所示:
      try
        prepare prep01 from
         "insert into " + aTableName +
         "(empnum, empname) " +
         "value ?, ?"
        for empRecord;
    
      onException
        if empRecord is unique
          myErrorHandler(8);
        else
          myErrorHandler(12);
        end
        end
      
下面是另一个示例:
  myString =
    "insert into myTable " +  "(empnum, empname) " +
    "value ?, ?";

  try
    prepare myStatement
      from myString;
  onException
    myErrorHandler(12);      // exits the program
  end
  
  try
    execute myStatement
    using :myRecord.empnum,
          :myRecord.empname;
  onException
    myErrorHandler(15);
  end
  

如上述示例所示,开发者可以在应该出现主变量的位置使用问号(?)。于是,在运行时使用的主变量的名称被放在运行已编译语句的 executeopenget 语句的 using 子句中。

对结果集的一行执行操作的 prepare 语句可以包含一个具有 where current of resultSetIdentifier 格式的短语。此项技术只有在下列情况下才有效:
下面是一个示例:
	 prepare prep02 from
    "update myTable " +
    "set empname = ?,  empphone = ?  where current of x1" ;
 
  execute prep02 using empname, empphone ;  freeSQL prep02;

有关圆括号对加号(+)用法的影响的示例,请参阅表达式

相关概念
对部件的引用
记录类型和属性
SQL 支持

相关参考
add
close
delete
异常处理
execute
表达式
freeSQL
get
get next
get previous
I/O 错误值
EGL 语句
open
replace
SQL 项属性
文本表达式
语法图

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.