We're Moving!

The Vertica Forum is moving to a new OpenText Analytics Database (Vertica) Community.

Join us there to post discussion topics, learn about

product releases, share tips, access the blog, and much more.

Create My New Community Account Now


Error when executing a stored procedure — Vertica Forum

Error when executing a stored procedure

ramon_perearamon_perea Community Edition User
edited November 2021 in General Discussion

Hello, We are developing some stored procedures at Version 11. In the code we call a FOR QUERY statement,
FOR field1,field2,field3,field4 IN QUERY SELECT field1,field2,field3,field4 FROM sometable LOOP RAISE NOTICE 'for returned %, %, %, %, FOUND=%',field1,field2,field3,field4, counter; counter:=counter+1; END LOOP;
The stored was created without problem, but when it's executed throw the next error:
SQL Error [10322] [0A000]: [Vertica][VJDBC](10322) ERROR: Executing FOR (QUERY) is not yet supported

The documentation said this statement is supported, someone can we help us?

Best Answer

  • Jim_KnicelyJim_Knicely - Select Field - Administrator
    edited November 2021 Answer ✓

    @ramon_perea - The abillity to use a FOR QUERY in Vertica was introduced in 11.0.0-1.

    Example:

    dbadmin=> SELECT version();
                   version
    -------------------------------------
     Vertica Analytic Database v11.0.0-1
    (1 row)
    
    dbadmin=> SELECT * FROM foo;
     id | first_name | last_name |  hire_dt
    ----+------------+-----------+------------
      1 | Jim        | K         | 2021-11-24
      2 | Jane       | L         | 2021-11-24
      3 | Josh       | K         | 2021-11-24
    (3 rows)
    
    dbadmin=> DO $$
    dbadmin$> DECLARE
    dbadmin$> field1 VARCHAR;
    dbadmin$> field2 VARCHAR;
    dbadmin$> field3 VARCHAR;
    dbadmin$> field4 VARCHAR;
    dbadmin$> counter INTEGER:=0;
    dbadmin$> BEGIN
    dbadmin$> FOR field1,field2,field3,field4 IN QUERY
    dbadmin$> SELECT
    dbadmin$>   id::INTEGER
    dbadmin$> , first_name
    dbadmin$> , last_name
    dbadmin$> , hire_dt
    dbadmin$>   FROM foo
    dbadmin$>   LIMIT 10
    dbadmin$> LOOP
    dbadmin$>   RAISE NOTICE 'for returned %, %, %, %, FOUND=%',field1,field2,field3,field4, counter; counter:=counter+1;
    dbadmin$> END LOOP;
    dbadmin$> END;
    dbadmin$> $$
    dbadmin-> ;
    NOTICE 2005:  for returned 1, Jim, K, 2021-11-24, FOUND=0
    NOTICE 2005:  for returned 2, Jane, L, 2021-11-24, FOUND=1
    NOTICE 2005:  for returned 3, Josh, K, 2021-11-24, FOUND=2
    DO
    
    

Answers

  • Jim_KnicelyJim_Knicely - Select Field - Administrator

    What version of 11 are you running?

  • ramon_perearamon_perea Community Edition User

    @Jim_Knicely said:
    What version of 11 are you running?

    Hi Jim

    Vertica Analytic Database v11.0.0-0

  • marcothesanemarcothesane - Select Field - Administrator

    Works with this one: ....

    DO $$
    DECLARE
    field1 VARCHAR;
    field2 VARCHAR;
    field3 VARCHAR;
    field4 VARCHAR;
    counter INTEGER:=0;
    BEGIN
    FOR field1,field2,field3,field4 IN QUERY
    SELECT
      id::INTEGER
    , first_name
    , last_name
    , hire_dt
      FROM foo
      LIMIT 10
    LOOP
      RAISE NOTICE 'for returned %, %, %, %, FOUND=%',field1,field2,field3,field4, counter; counter:=counter+1;
    END LOOP;
    END;
    $$
    -- out NOTICE 2005:  for returned 1, Arthur, Dent, 2017-02-05 00:00:00, FOUND=0
    -- out NOTICE 2005:  for returned 2, Ford, Prefect, 2017-02-05 00:00:00, FOUND=1
    -- out NOTICE 2005:  for returned 3, Zaphod, Beeblebrox, 2017-02-05 00:00:00, FOUND=2
    -- out NOTICE 2005:  for returned 4, Tricia, McMillan, 2017-02-05 00:00:00, FOUND=3
    -- out NOTICE 2005:  for returned 5, Gag, Halfrunt, 2017-02-05 00:00:00, FOUND=4
    -- out NOTICE 2005:  for returned 6, Prostetnic Vogon, Jeltz, 2017-02-05 00:00:00, FOUND=5
    -- out NOTICE 2005:  for returned 7, Lionel, Prosser, 2017-02-05 00:00:00, FOUND=6
    -- out NOTICE 2005:  for returned 8, Benji, Mouse, 2017-02-05 00:00:00, FOUND=7
    -- out NOTICE 2005:  for returned 9, Frankie, Mouse, 2017-02-05 00:00:00, FOUND=8
    -- out NOTICE 2005:  for returned 10, Svlad, Cjelli, 2017-02-05 00:00:00, FOUND=9
    SELECT VERSION();                                                                                                                                                                    
    -- out                VERSION               
    -- out -------------------------------------
    -- out  Vertica Analytic Database v11.0.1-0
    
  • ramon_perearamon_perea Community Edition User

    @marcothesane said:
    Works with this one: ....

    DO $$
    DECLARE
    field1 VARCHAR;
    field2 VARCHAR;
    field3 VARCHAR;
    field4 VARCHAR;
    counter INTEGER:=0;
    BEGIN
    FOR field1,field2,field3,field4 IN QUERY
    SELECT
      id::INTEGER
    , first_name
    , last_name
    , hire_dt
      FROM foo
      LIMIT 10
    LOOP
      RAISE NOTICE 'for returned %, %, %, %, FOUND=%',field1,field2,field3,field4, counter; counter:=counter+1;
    END LOOP;
    END;
    $$
    -- out NOTICE 2005:  for returned 1, Arthur, Dent, 2017-02-05 00:00:00, FOUND=0
    -- out NOTICE 2005:  for returned 2, Ford, Prefect, 2017-02-05 00:00:00, FOUND=1
    -- out NOTICE 2005:  for returned 3, Zaphod, Beeblebrox, 2017-02-05 00:00:00, FOUND=2
    -- out NOTICE 2005:  for returned 4, Tricia, McMillan, 2017-02-05 00:00:00, FOUND=3
    -- out NOTICE 2005:  for returned 5, Gag, Halfrunt, 2017-02-05 00:00:00, FOUND=4
    -- out NOTICE 2005:  for returned 6, Prostetnic Vogon, Jeltz, 2017-02-05 00:00:00, FOUND=5
    -- out NOTICE 2005:  for returned 7, Lionel, Prosser, 2017-02-05 00:00:00, FOUND=6
    -- out NOTICE 2005:  for returned 8, Benji, Mouse, 2017-02-05 00:00:00, FOUND=7
    -- out NOTICE 2005:  for returned 9, Frankie, Mouse, 2017-02-05 00:00:00, FOUND=8
    -- out NOTICE 2005:  for returned 10, Svlad, Cjelli, 2017-02-05 00:00:00, FOUND=9
    SELECT VERSION();                                                                                                                                                                    
    -- out                VERSION               
    -- out -------------------------------------
    -- out  Vertica Analytic Database v11.0.1-0
    

    Hello.

    The same error:

    SQL Error [10322] [0A000]: [Vertica]VJDBC ERROR: Executing FOR (QUERY) is not yet supported

  • ramon_perearamon_perea Community Edition User

    @Jim_Knicely said:
    @ramon_perea - The abillity to use a FOR QUERY in Vertica was introduced in 11.0.0-1.

    Example:

    dbadmin=> SELECT version();
                   version
    -------------------------------------
     Vertica Analytic Database v11.0.0-1
    (1 row)
    
    dbadmin=> SELECT * FROM foo;
     id | first_name | last_name |  hire_dt
    ----+------------+-----------+------------
      1 | Jim        | K         | 2021-11-24
      2 | Jane       | L         | 2021-11-24
      3 | Josh       | K         | 2021-11-24
    (3 rows)
    
    dbadmin=> DO $$
    dbadmin$> DECLARE
    dbadmin$> field1 VARCHAR;
    dbadmin$> field2 VARCHAR;
    dbadmin$> field3 VARCHAR;
    dbadmin$> field4 VARCHAR;
    dbadmin$> counter INTEGER:=0;
    dbadmin$> BEGIN
    dbadmin$> FOR field1,field2,field3,field4 IN QUERY
    dbadmin$> SELECT
    dbadmin$>   id::INTEGER
    dbadmin$> , first_name
    dbadmin$> , last_name
    dbadmin$> , hire_dt
    dbadmin$>   FROM foo
    dbadmin$>   LIMIT 10
    dbadmin$> LOOP
    dbadmin$>   RAISE NOTICE 'for returned %, %, %, %, FOUND=%',field1,field2,field3,field4, counter; counter:=counter+1;
    dbadmin$> END LOOP;
    dbadmin$> END;
    dbadmin$> $$
    dbadmin-> ;
    NOTICE 2005:  for returned 1, Jim, K, 2021-11-24, FOUND=0
    NOTICE 2005:  for returned 2, Jane, L, 2021-11-24, FOUND=1
    NOTICE 2005:  for returned 3, Josh, K, 2021-11-24, FOUND=2
    DO
    
    

    Thanks a lot @Jim_Knicely . We need to make a request to the production area for the upgrade.

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file