DB2 V9.7 for Linux, UNIX, and Windows

DB2Command.CommandText 属性

获取或设置要对数据库执行的 SQL 语句、XQuery 表达式或存储过程。

名称空间:
IBM.Data.DB2
组合件:
IBM.Data.DB2(在 IBM.Data.DB2.dll 中)

语法

[Visual Basic]
Public Property CommandText As String
[C#]
public string CommandText {get; set;}
[C++]
public: __property String* get_CommandText();
public: __property void set_CommandText(String*);
[JScript]
public function get CommandText() : String;
public function set CommandText(String);

属性值

要执行的 SQL 语句、XQuery 表达式或存储过程。缺省值为空字符串("")。

存储过程注释

将 CommandType 属性设置为 StoredProcedure 时,应将 CommandText 属性设置为存储过程的名称。建议使用 CommandType.StoredProcedure 方法来调用存储过程。

过程是存储在数据库中的可执行对象。通常,它是已预编译的一个或多个 SQL 语句。用于调用带有 CommandType.Text 的过程的语法为:

{[?=]call procedure-name[([parameter][,[parameter]]...)]}

其中 procedure-name 指定过程的名称,而 parameter 指定过程参数。将“?=”用于返回参数时,必须指定换码序列(大括号)。否则,换码序列为可选。

当您调用其中一个 Execute 方法(例如,ExecuteReaderExecuteNonQuery)时,命令将执行此存储过程。

SQL 语句注释

如果当前连接正在进行执行或访存操作,那么不能设置 ConnectionCommandTypeCommandText 属性。

将参数传递给 DB2Command 调用的 SQL 语句或存储过程时,IBM® Data Server Provider for .NET 支持使用参数标记的命名参数或定位参数。不能在同一个 SQL 语句中使用命名参数和定位参数的组合。

当使用 DB2ParameterCollection 中的命名参数时,请在 SQL 语句中指定参数对象的名称并将该参数对象添加至 DB2Command 对象。例如:

 DB2Command cmd = new DB2Command( "SELECT * FROM EMPLOYEE 
  WHERE LASTNAME = @lastname AND WORKDEPT = @workdept", conn );
 cmd.Parameters.Clear();
 cmd.Parameters.Add( "@workdept", DB2Type.SmallInt );
 cmd.Parameters.Add( "@lastname", DB2Type.VarChar, 15 );
 DB2Reader reader = cmd.ExecuteReader();

参数标记名称不区分大小写,必须以符号“@”或冒号“:”(对于主变量)作为前缀并且可由一些符号组成,任何可用作 SQL 标识一部分的符号都可以。有关 SQL 标识的详细信息,请参阅 DB2® 数据服务器文档中的以下主题:“标识”。 不支持在同一语句中使用多个参数类型。这意味着,使用定位参数标记的语句不能包含命名参数标记或主变量。同样地,使用命名参数标记的语句不能包含主变量或定位参数标记

缺省情况下,会禁用对以冒号“:”作为前缀的主变量的支持。要启用主变量支持,必须在连接字符串中将 HostVarParameters 属性设置为 TRUE。为与包含主变量的应用程序兼容,已增加主变量支持。建议不要开发带有主变量的新应用程序。

SELECT * FROM Customers WHERE CustomerID = ?

因此,将 DB2Parameter 对象添加至 DB2ParameterCollection 的顺序必须与参数的问号占位符的位置相对应。

如果参数包含空值,IBM Data Server Provider for .NET 会将该参数作为空值来绑定。例如,DB2ParameterCollection

{1, null, 2}

被传递给 CommandText 属性:

 call sp(?, ?, ?) 

会导致 IBM Data Server Provider for .NET 将第一个参数绑定至值 1、第二个参数绑定至空值、以及第三个参数绑定至值 2。

XQuery 表达式注释

必须使用下列字符作为 CommandText 中 XQuery 表达式的前缀:XQUERY

示例

[Visual Basic, C#] 以下示例将创建 DB2Command 并设置它的某些属性。

[Visual Basic]
Public Sub CreateMyDB2Command()
    Dim myCommand As New DB2Command()
    myCommand.CommandText = "SELECT * FROM EMPLOYEE ORDER BY EMPNO"
    myCommand.CommandTimeout = 20
End Sub

[C#]
public void CreateMyDB2Command()
{
   DB2Command myCommand = new DB2Command();
   myCommand.CommandText = "SELECT * FROM EMPLOYEE ORDER BY EMPNO";
   myCommand.CommandTimeout = 20;
}

数据服务器限制

除 DB2 V9 及更高版本之外的所有数据服务器
仅 DB2 V9 及更高版本支持 XQuery 表达式。
注: ODBC 换码序列在 DB2CommandTextProperty 中不受支持