ORA-01008: not all variables bound. They are bound

前端 未结 8 1413
青春惊慌失措
青春惊慌失措 2020-11-29 08:01

I have come across an Oracle problem for which I have so far been unable to find the cause. The query below works in Oracle SQL developer, but when running in .NET it throws

8条回答
  •  时光说笑
    2020-11-29 08:35

    The solution in my situation was similar answer to Charles Burns; and the problem was related to SQL code comments.

    I was building (or updating, rather) an already-functioning SSRS report with Oracle datasource. I added some more parameters to the report, tested it in Visual Studio, it works great, so I deployed it to the report server, and then when the report is executed the report on the server I got the error message:

    "ORA-01008: not all variables bound"

    I tried quite a few different things (TNSNames.ora file installed on the server, Removed single line comments, Validate dataset query mapping). What it came down to was I had to remove a comment block directly after the WHERE keyword. The error message was resolved after moving the comment block after the WHERE CLAUSE conditions. I have other comments in the code also. It was just the one after the WHERE keyword causing the error.

    SQL with error: "ORA-01008: not all variables bound"...

    WHERE
    /*
        OHH.SHIP_DATE BETWEEN TO_DATE('10/1/2018', 'MM/DD/YYYY') AND TO_DATE('10/31/2018', 'MM/DD/YYYY')
        AND OHH.STATUS_CODE<>'DL'
        AND OHH.BILL_COMP_CODE=100
        AND OHH.MASTER_ORDER_NBR IS NULL
    */
    
        OHH.SHIP_DATE BETWEEN :paramStartDate AND :paramEndDate
        AND OHH.STATUS_CODE<>'DL'
        AND OHH.BILL_COMP_CODE IN (:paramCompany)
        AND LOAD.DEPART_FROM_WHSE_CODE IN (:paramWarehouse) 
        AND OHH.MASTER_ORDER_NBR IS NULL
        AND LOAD.CLASS_CODE IN (:paramClassCode) 
        AND CUST.CUST_CODE || '-' || CUST.CUST_SHIPTO_CODE IN (:paramShipto) 
    

    SQL executes successfully on the report server...

    WHERE
        OHH.SHIP_DATE BETWEEN :paramStartDate AND :paramEndDate
        AND OHH.STATUS_CODE<>'DL'
        AND OHH.BILL_COMP_CODE IN (:paramCompany)
        AND LOAD.DEPART_FROM_WHSE_CODE IN (:paramWarehouse) 
        AND OHH.MASTER_ORDER_NBR IS NULL
        AND LOAD.CLASS_CODE IN (:paramClassCode) 
        AND CUST.CUST_CODE || '-' || CUST.CUST_SHIPTO_CODE IN (:paramShipto)   
    /*
        OHH.SHIP_DATE BETWEEN TO_DATE('10/1/2018', 'MM/DD/YYYY') AND TO_DATE('10/31/2018', 'MM/DD/YYYY')
        AND OHH.STATUS_CODE<>'DL'
        AND OHH.BILL_COMP_CODE=100
        AND OHH.MASTER_ORDER_NBR IS NULL
    */
    

    Here is what the dataset parameter mapping screen looks like.

提交回复
热议问题