ORA-01008: not all variables bound

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
joongtang
Posts: 16
Joined: Wed 07 Dec 2016 04:46

ORA-01008: not all variables bound

Post by joongtang » Fri 03 Aug 2018 00:57

Hi!
I use unidac 7.2.7 version for oracle.

I got this error 'ORA-01008: not all variables bound' that occured when we use oracle merge statement.
I think it's same error at this link 'viewtopic.php?f=1&t=30679'.

Test scheme is like this.

Code: Select all

CREATE TABLE TEST_T1 (
  COL1   VARCHAR2(5 BYTE)  NOT NULL,
  COL2   VARCHAR2(10 BYTE) NOT NULL,
  COL3   VARCHAR2(10 BYTE) NOT NULL,
  COL4   VARCHAR2(50 BYTE) NOT NULL,
  COL5   NUMBER(20, 0)     NOT NULL,
  COL6   VARCHAR2(25 BYTE) NOT NULL,
  COL7   VARCHAR2(20 BYTE) NOT NULL,
  COL8   VARCHAR2(20 BYTE) DEFAULT 'NULL' NOT NULL,
  COL9   NUMBER(8, 0)      DEFAULT 0,
  COL10  NUMBER(8, 0)      DEFAULT 0,
  COL11  VARCHAR2(16 BYTE),
  COL12  DATE              DEFAULT SYSDATE,
  COL13  VARCHAR2(16 BYTE),
  COL14  DATE              DEFAULT SYSDATE,
  CONSTRAINT PK_TEST_T1 PRIMARY KEY (COL1, COL2, COL3, COL4, COL5)
)
Merge query text is like this.

Code: Select all

MERGE INTO TEST_T1
  USING DUAL                                   
       ON ( COL1  = :COL1                        
        AND COL2  = :COL2                        
        AND COL3  = :COL3                        
        AND COL4  = :COL4                        
        AND COL6  = :COL6                        
        AND COL7  = :COL7                        
        AND COL8  = :COL8)                        
WHEN MATCHED THEN                                
  UPDATE SET COL9 = COL9 + :COL9                     
WHEN NOT MATCHED THEN                            
  INSERT                                         
    (COL1, COL2, COL3, COL4, COL5,               
     COL6, COL7, COL8, COL9, COL11, COL12)       
  VALUES                                         
    (:COL1, :COL2, :COL3, :COL4, :COL5,          
     :COL6, :COL7, :COL8, :COL9, :COL11, SYSDATE)
code like this

Code: Select all

  Qry.Close;
  Qry.SQL.Text := sSqlDetail;

  Qry.ParamByName('COL1').AsString  := 'T';
  Qry.ParamByName('COL2').AsString  := 'E';
  Qry.ParamByName('COL3').AsString  := 'S';
  Qry.ParamByName('COL4').AsString  := 'T';
  Qry.ParamByName('COL5').AsInteger := 0;
  Qry.ParamByName('COL6').AsString  := 'E';
  Qry.ParamByName('COL7').AsString  := 'N';
  Qry.ParamByName('COL8').AsString  := 'D';
  Qry.ParamByName('COL9').AsInteger := 0;
  Qry.ParamByName('COL11').AsString := '.';

  Qry.ExecSQL;
Here is error message

Code: Select all

ORA-01008: not all variables bound
Thanks ^^

MaximG
Devart Team
Posts: 1822
Joined: Mon 06 Jul 2015 11:34

Re: ORA-01008: not all variables bound

Post by MaximG » Fri 03 Aug 2018 09:01

We checked UniDAC 7.2.7 according to your description and found no problems. Please check the operation of your application on the latest version of UniDAC 7.3.9. If in this case the error you described still occurs, please send us the full source code of your small test project, in which the problem reproduces. This can be done via the e-support form (https://www.devart.com/company/contactform.html)

Post Reply