如何在sql命令文本中使用变量(datatable)来执行

时间:2017-10-26 13:28:34

标签: sql angularjs datatable vertica

我是Vertica的新手并在angular aspx页面中尝试此操作。

           `con.Open();
            cmd = con.CreateCommand();
            cmd.Connection = con;
            cmd.Parameters.Add(new VerticaParameter("@tblCustomers", table));
            cmd.CommandText = "insert into customers select * from @tblCustomers";
            cmd.ExecuteNonQuery();`

我已经建立了连接并插入了一些新的记录。 但是现在我试图在我的vertica数据库表中插入批量记录。

与SqlServer相同的东西,

我已将表格数据加载到“table”变量中。哪个是数据表。

有可能这样做吗?因为我收到了一些错误

Incorrect syntax at or near $1

customers和@tblCustomers都有相同的列。

谢谢!

1 个答案:

答案 0 :(得分:0)

不管你是否应该做这样的事情,在你发布的代码中你将@tblCustomers作为参数传递给查询,所以它会去处理它作为字符串值,而不是查询中的对象名称。您需要在代码中构建CommandText而不将其作为参数。类似的东西:

cmd.CommandText = "insert into customers select * from " & tableName

(对不起,如果这个语法不是很正确,但希望它能够跨越这一点)

其他一些(也是重要的)注意事项:

  1. 执行INSERT时始终使用列列表。使用INSERT INTO MyTable (some_column, some_other_column) SELECT...而不是INSERT INTO MyTable SELECT...
  2. 永远不要使用SELECT *。列出你的专栏名称。