我有一个使用Oracle数据库的ASP.NET Web应用程序(VB.NET)。在插入时,我需要获取插入行的标识。我正在尝试使用RETURNING,但我一直得到返回值1。在Oracle中返回INSERT没有返回正确的值
Dim strInsert As String = "INSERT INTO L.TRANSACTIONS (LOCATION_KEY, TRANS_CREATOR, TRANS_EMAIL, TRANS_PHONE) VALUES (:location_key, :trans_creator, :trans_email, :trans_phone) RETURNING TRANS_ID INTO :ukey"
Try
If oConn.State <> ConnectionState.Open Then
oConn.Open()
End If
Dim oCmnd As New OracleCommand(strInsert, oConn)
oCmnd.Parameters.Add("location_key", Session.Item("location").ToString.Trim())
oCmnd.Parameters.Add("trans_creator", Session.Item("userID").ToString.Trim())
oCmnd.Parameters.Add("trans_email", Session.Item("mail").ToString.Trim())
oCmnd.Parameters.Add("trans_phone", Session.Item("phone").ToString.Trim())
oCmnd.Parameters.Add("ukey", Oracle.DataAccess.Client.OracleDbType.Varchar2, System.Data.ParameterDirection.ReturnValue)
Dim strUkey As String = oCmnd.ExecuteNonQuery()
当我运行应用程序时,记录被插入,TRANS_ID递增,但返回的值始终为“1”。
它是一个数据类型的问题?尝试使ukey int int – jle 2012-03-15 19:51:14
@jle - 编号改变为一个int16,它仍然返回值为1.我想知道它是否返回一个真正的布尔值作为一个int? – monkeypushbutton 2012-03-15 20:04:17