VB.NET Oracle SQL“;在“;加上;返回到";给出ORA-00933命令未正确结束
我需要更新一些代码,作为其中的一部分,我需要在表中插入一行,并获取刚刚输入的行的id(主键) 我已经对此进行了研究,我认为我应该使用返回到和Oracle参数。我过去曾成功地使用参数插入值 我有一个从VB.NET运行的INSERT语句,但只要我将文本“RETURNING id INTO:myId”添加到ORA-00933中,命令就没有正确结束 下面是代码的一个版本VB.NET Oracle SQL“;在“;加上;返回到";给出ORA-00933命令未正确结束,vb.net,oracle,odp.net,Vb.net,Oracle,Odp.net,我需要更新一些代码,作为其中的一部分,我需要在表中插入一行,并获取刚刚输入的行的id(主键) 我已经对此进行了研究,我认为我应该使用返回到和Oracle参数。我过去曾成功地使用参数插入值 我有一个从VB.NET运行的INSERT语句,但只要我将文本“RETURNING id INTO:myId”添加到ORA-00933中,命令就没有正确结束 下面是代码的一个版本 sql = "INSERT ... RETURNING id INTO :myId" Connect() Dim intRecsAff
sql = "INSERT ... RETURNING id INTO :myId"
Connect()
Dim intRecsAffected As Integer = 0
Dim comm As OracleCommand = New OracleCommand(sql, _conn)
Dim param As OracleParameter
param = New OracleParameter()
param.ParameterName = ":myId"
param.OracleDbType = OracleDbType.Int32
param.Direction = ParameterDirection.Output ' Tried ReturnValue
comm.Parameters.Add(param)
intRecsAffected = comm.ExecuteNonQuery()
id = comm.Parameters(":myId").Value
Disconnect()
有什么想法吗?我认为您的语法不正确:
sql = "INSERT ... RETURNING id INTO myId"
示例如下:
事实上,我意识到发生了什么。我删掉了完整的SQL,因为它很长,而且里面有一些敏感的东西 INSERT使用的是SELECT而不是VALUES来获取字段的值。这不起作用-我猜是因为使用SELECT的INSERT可以添加多行,即使在这种情况下不会 重新编写SQL以使用值,VB.Net代码运行良好
感谢所有回复者。您的SQL有问题,但由于您只是部分显示,因此无法真正提供帮助。请发布完整的SQL。返回到is PL/SQL语法,而不是SQL,因此您需要使用匿名PL/SQL块(在开始和结束时换行)