VB.NET Oracle SQL "INSERT INTO" with "RETURNING INTO" 给出 ORA-00933 命令未正确结束
VB.NET Oracle SQL "INSERT INTO" with "RETURNING INTO" gives ORA-00933 Command Not Properly Ended
我需要更新一些代码,作为其中的一部分,我需要在 table 中插入一行并获取刚刚输入的行的 ID(主键)。
对此进行了研究,我相信我应该使用 RETURNING INTO 和 Oracle Parameters。我过去曾成功地使用参数来插入值。
我有一个从 VB.NET 完美运行的 INSERT 语句,但是一旦我添加文本“”RETURNING id INTO :myId”,我就会得到 ORA-00933 命令未正确结束。
这是代码的一个版本。
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"
示例如下:
https://oracle-base.com/articles/misc/dml-returning-into-clause
其实,意识到是怎么回事了。我剪掉了完整的 SQL 因为它很长而且里面有一些敏感的东西。
INSERT 使用 SELECT 而不是 VALUES 来获取字段的值。那行不通-我猜是因为带有 SELECT 的 INSERT 可以添加多行,即使在这种情况下它不会。
已重写 SQL 以使用 VALUES,VB.Net 代码工作正常。
感谢所有回复的人。
我需要更新一些代码,作为其中的一部分,我需要在 table 中插入一行并获取刚刚输入的行的 ID(主键)。
对此进行了研究,我相信我应该使用 RETURNING INTO 和 Oracle Parameters。我过去曾成功地使用参数来插入值。
我有一个从 VB.NET 完美运行的 INSERT 语句,但是一旦我添加文本“”RETURNING id INTO :myId”,我就会得到 ORA-00933 命令未正确结束。
这是代码的一个版本。
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"
示例如下: https://oracle-base.com/articles/misc/dml-returning-into-clause
其实,意识到是怎么回事了。我剪掉了完整的 SQL 因为它很长而且里面有一些敏感的东西。
INSERT 使用 SELECT 而不是 VALUES 来获取字段的值。那行不通-我猜是因为带有 SELECT 的 INSERT 可以添加多行,即使在这种情况下它不会。
已重写 SQL 以使用 VALUES,VB.Net 代码工作正常。
感谢所有回复的人。