Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Oracle (http://www.go4expert.com/forums/oracle-forum/)
-   -   Oracle sequences and VB problems (http://www.go4expert.com/forums/oracle-sequences-vb-t13602/)

josemacall 5Sep2008 15:52

Oracle sequences and VB problems
 
Hi guys:

I've met the following issue. We've created some sequences with this code:

CREATE SEQUENCE SQ_TR_HQPROJECT MINVALUE 13 MAXVALUE
START WITH 13 INCREMENT BY 1

Right, while using TOAD or SQLPlus the sequence seems to work properly:
SQL> select SQ_TR_HQPROJECT.nextval from dual;

NEXTVAL
----------
21

SQL> r
1* select SQ_TR_HQPROJECT.nextval from dual

NEXTVAL
----------
22
But when we implement in our program the increment is by 2 not by 1:
Const SqlCodFiltro As String = "SELECT SQ_TR_HQPROJECT.NEXTVAL FROM dual"

On Error GoTo Error

Dim rsServicios As Object

Set rsServicios = conexOracleSIGEL.CreateDynaset(SqlCodFiltro, 0&)

Do While Not rsServicios.EOF

IdFiltro = rsServicios(0)
rsServicios.MoveNext
gCodFiltroEjecutado = IdFiltro
Loop
The first time we run the procedure returns 23 and the second one 25.

Can anyone hepl us with this problem.

Thanks in advance.

xpi0t0s 6Sep2008 15:49

Re: Oracle sequences and VB problems
 
This will be because you're running the query twice. Enable SQL*Net tracing, then step through the code in the debugger and watch the trace file in an editor (you may need to reopen the trace file each step to see what's new, depending on which editor you use). Then you will be able to see where the extra run occurs.

I checked with Oracle 10.2.0.3, using OLE DB 10.2.0.2.20 and the following code:

Code:

      Dim oCon As ADODB.Connection
      Text = "Provider=ORAOLEDB.ORACLE;Data Source=V102_host;User ID=scott;Password=tiger"
      oCon = New ADODB.Connection
      oCon.ConnectionString = Text
      oCon.Open()

      Dim oCmd As ADODB.Command
      oCmd = New ADODB.Command
      oCmd.ActiveConnection = oCon
      oCmd.CommandType = ADODB.CommandTypeEnum.adCmdText
      oCmd.CommandText = "select hqproj.nextval from dual"
      'oCmd.Execute()

      Dim oRst As ADODB.Recordset
      oRst = New ADODB.Recordset
      oRst.Open(oCmd)
      Do While Not oRst.EOF
          MsgBox("<" & oRst(0).Value & ">")
          oRst.MoveNext()
      Loop

With oCmd.Execute() not commented out I also got the same behaviour, because oRst.Open also executes the query.

josemacall 11Sep2008 14:17

Re: Oracle sequences and VB problems
 
Thank you very much.

As soon as I test your solution I'll let you know


All times are GMT +5.5. The time now is 15:16.