Обсуждение: SELECT is causing a runtime error when used in stored functions: State=42601, Err=7, Msg=ERROR: query has no destination for result data;

Поиск
Список
Период
Сортировка

It would be great, if you give me a hint on a problem I am having.

 

When I am using "SELECT" in a prepared function called through ODBC / C++ interface, I am getting a runtime Error:

 

State=42601, Err=7, Msg=ERROR: query has no destination for result data;

 

Example:

CREATE OR REPLACE FUNCTION MyTest

(

      IN OUT      v_1 int

 

) AS $$BEGIN

 

      SELECT v_1 = 1;

 

END;$$ LANGUAGE plpgsql

 

 

I can get rid of the error message, when I am changing to Postgres Syntax

      v_1 := 1;

 

However I have no solution for selecting several vars from a table:

Example (which works without problem in MS SQL and MySQL):

 

      SELECT v_ps = sex,

             v_pl = lng,

             v_pa = age,

             v_pr = reg,

             v_pg = grp

         FROM pref

         WHERE memb_id = v_id;

 

How can I get rid of the "query has no destination for result data"?

 

Your help is much appreciated.

 

Kindest regards

 

 

Lothar Bongartz

 

On 16/01/2010 13:47, Lothar Bongartz wrote:
> State=42601, Err=7, Msg=ERROR: query has no destination for result data;
> Example:
>
> CREATE OR REPLACE FUNCTION MyTest
> (
>       IN OUT      v_1 int
> ) AS $$BEGIN
>       SELECT v_1 = 1;
> END;$$ LANGUAGE plpgsql

The error message says it all - in plpgsql you need to specify a
destination variable for the result of the SELECT.

  create....
  as
  $$
  declare
    m_result integer;
  begin
    select 1 into m_result;
    return m_result;
  end;
  $$
  language plpgsql;

If you use an OUT parameter as you did in your example, you don't need
the "return m_result;", though you might still need a "return;" to end
the function - not sure on this one.

Ray.


--
Raymond O'Donnell :: Galway :: Ireland
rod@iol.ie