SQL PL/SQL dynamic variable binding

AAD

I would like to run below query:

SELECT 
    * 
FROM 
    TABLE1
WHERE 
    COL1 = :DynamicValue1
    AND  COL2 = :DynamicValue2
USING 
    USERENTEREDVALUE1, USERENTEREDVALUE2;

I don't want to use EXECUTE IMMEDIATE.

How can I use using keyword in select query? When I run this I get pop up to enter value but it gives error Ora-00933

Kaushik Nayak

You may use substitution variables

DEFINE lname = 'Rogers'
DEFINE mgrid = 122

SELECT *
FROM employees
WHERE last_name = '&lname'
AND manager_id  = '&mgrid';

When you run this in SQL developer or SQL* Plus, you get

old:SELECT *
FROM employees
WHERE last_name = '&lname'
AND manager_id  = &mgrid
new:SELECT *
FROM employees
WHERE last_name = 'Rogers'
AND manager_id  = 122

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DAT JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- -------- ---------- ---------- -------------- ---------- -------------
        134 Michael              Rogers                    MROGERS                   650.127.1834         26-08-06 ST_CLERK         2900                       122            50

Or use Bind variables

VARIABLE   lname VARCHAR2(40) 
VARIABLE  mgrid NUMBER 
EXEC :lname := 'Rogers'
EXEC :mgrid := 122
VARIABLE x REFCURSOR


BEGIN
     OPEN :x FOR SELECT *
                 FROM employees
                 WHERE last_name =:lname 
                 AND manager_id =:mgrid;
END;
/

    PRINT x

Result

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.



EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DAT JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- -------- ---------- ---------- -------------- ---------- -------------
        134 Michael              Rogers                    MROGERS                   650.127.1834         26-08-06 ST_CLERK         2900                       122            50

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    pump.io port in URL

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    flutter: dropdown item programmatically unselect problem

  14. 14

    How to use merge windows unallocated space into Ubuntu using GParted?

  15. 15

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  16. 16

    Nuget add packages gives access denied errors

  17. 17

    Svchost high CPU from Microsoft.BingWeather app errors

  18. 18

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  19. 19

    12.04.3--- Dconf Editor won't show com>canonical>unity option

  20. 20

    Any way to remove trailing whitespace *FOR EDITED* lines in Eclipse [for Java]?

  21. 21

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

HotTag

Archive