Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to insert same random value into two columns within one SQL Statement (Oracle)?

My example doesn't work:

INSERT INTO test_table 
 (column_1, column_2)
 VALUES (DBMS_CRYPTO.RANDOMBYTES(16), column_1); 

I'm not interested in PL/SQL solutions.

like image 868
trunkc Avatar asked Sep 02 '26 14:09

trunkc


2 Answers

One option is to use scalar subquery caching:

INSERT INTO test_table (column_1, column_2)
SELECT random, random FROM
    (SELECT (SELECT dbms_crypto.randombytes(16) FROM dual) random FROM dual);

Or using PL/SQL:

DECLARE
    random RAW(16) := dbms_crypto.randombytes(16);
BEGIN
    INSERT INTO test_table (column_1, column_2) VALUES (random, random);
END;
like image 148
Husqvik Avatar answered Sep 05 '26 05:09

Husqvik


Use a subquery:

INSERT INTO test_table(column_1, column_2)
  SELECT val, val
  FROM (SELECT DBMS_CRYPTO.RANDOMBYTES(16) as val FROM dual) x;

Or, this can be written as:

INSERT INTO test_table(column_1, column_2)
  WITH x AS (SELECT DBMS_CRYPTO.RANDOMBYTES(16) as val FROM dual)
  SELECT val, val
  FROM x;
like image 26
Gordon Linoff Avatar answered Sep 05 '26 05:09

Gordon Linoff



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!