我正在尝试使用参数化查询在我们的Oracle服务器上创建索引。如果我使用字符串连接,我可以创建索引,所以我认为它不是帐户或权限问题。我收到错误:
ORA-01036: illegal variable name/number
我在代码中找不到任何错误,但我确信我遗漏了一些东西。我使用的是Oracle.DataAccess.dll版本4.112.3.0。服务器报告的版本是“Oracle Database 11g企业版版本11.2.0.3.0 - 64位生产”
我已经尝试删除所有参数,除了一个并得到相同的错误。 1个或多个参数的任何组合都会导致错误。每次都会发生错误。我用手表来验证参数是否正确设置,我在设置之前尝试清除参数。无论我到目前为止做了什么,我仍然得到错误。这是代码:
using (OracleCommand mycom = new OracleCommand())
{
using (OracleConnection Connection = new OracleConnection(connectionString))
{
mycom.BindByName = true;
mycom.CommandText = "CREATE INDEX :indexname on :tablename (:colname)";
mycom.Parameters.Add("indexname", indexName);
mycom.Parameters.Add("tablename", tableName);
mycom.Parameters.Add("colname", colName);
mycom.Connection = Connection;
mycom.CommandType = CommandType.Text;
mycom.Connection.Open();
mycom.ExecuteNonQuery();
}
}
答案 0 :(得分:0)
您不能在DDL语句中使用绑定变量(如CREATE INDEX
)。绑定变量仅用于DML语句。您需要在C#代码中构建DDL语句。
这是您的应用程序安装过程的一部分吗?否则,想要从应用程序创建索引是极其罕见的。您的应用程序不应在初始安装过程之外创建任何数据库对象。