获取或设置要对数据库执行的 SQL 语句、XQuery 表达式或存储过程。
[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 方法(例如,ExecuteReader 或 ExecuteNonQuery)时,命令将执行此存储过程。
如果当前连接正在进行执行或访存操作,那么不能设置 Connection、CommandType 和 CommandText 属性。
将参数传递给 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。
必须使用下列字符作为 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;
}