【发布时间】:2017-08-07 13:04:01
【问题描述】:
我有一个带有 CTE 的有效 SQL 查询,我需要在我的 vb.net 应用程序中使用该查询,但问题是我收到一条错误消息:
"Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'"
代码是这样的:
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Dim dt As New DataTable
Dim sqlcmd As String = (";WITH q AS
(
SELECT a.*
FROM SampleData AS a
WHERE EXISTS (SELECT 1
FROM SampleData AS b
WHERE a.Name = b.Name
AND a.Account= b.Account
AND a.Amount = -b.Amount)
)
DELETE FROM q OUTPUT DELETED.* INTO SampleData2")
If connDB.State = ConnectionState.Closed Then
connDB.Open()
End If
Try
ds.Tables.Add(dt)
da = New OleDbDataAdapter(sqlcmd, connDB)
da.Fill(dt)
对此有任何帮助吗?我找不到任何解决方案。
【问题讨论】:
-
如果没有初始的
;会怎样? -
它返回相同的错误:(
-
其他查询是否使用相同的设置?就像您将查询更改为“SELECT 1”之类的简单查询?
-
是的,我试过删除 CTE 并且它可以工作,但是当我添加它时它返回一个错误
-
SampleData2是什么?它真的是 SQL Server 吗?如果是,为什么不使用 SqlClient 类?可以使用存储过程吗?
标签: sql-server vb.net ado.net