Don't you have to select into a variable and then return the variable to the client per [1]?
Consider the following example from my Oracle system: beginning code ... V_SQL := 'SELECT COUNT(*) FROM ' || V_TAB; EXECUTE IMMEDIATE V_SQL INTO V_CNT; ending code ... [1] https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN . On Tue, Dec 29, 2020 at 11:40 AM Adrian Klaver <adrian.kla...@aklaver.com> wrote: > On 12/28/20 10:34 PM, Muthukumar.GK wrote: > > Pleas do not top post, the style on this list is bottom/inline posting. > > Hi Adrian Klaver, > > > > Sorry for typo mistake. Instead of writing lengthy query, I had written > > it simple. Actually my main concept is to bring result set with multiple > > rows (using select query) with help of dynamic query. > > > > When calling that procedure in Pgadmin4 window, simply getting the > > message as ‘ CALL Query returned successfully in 158 msec’. > > > > FYI, I have implemented simple dynamic query for UPDATE and DELETE rows. > > It is working fine without any issues. > > > > Please let me know is there any way of getting result set using dynamic > > query. > > > > _Issue with dynamic select:-_ > > > > __ > > > > CREATE OR REPLACE Procedure sp_select_dynamic_sql( > > > > keyvalue integer) > > > > LANGUAGE 'plpgsql' > > > > AS $BODY$ > > > > Declare v_query text; > > > > BEGIN > > > > v_query:= 'select * from Los_BankInfo ' > > > > || ' where pk_id = ' > > > > || quote_literal(keyvalue); > > > > execute v_query; > > > > END; > > > > $BODY$; > > > > _Execuion__ of Proc:-_ > > > > CALL sp_select_dynamic_sql (11); > > > > _Output:-_ > > > > CALL > > > > Query returned successfully in 158 msec. > > See here: > > > https://www.postgresql.org/docs/current/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING-PROCEDURE > > " > 42.6.2. Returning from a Procedure > > A procedure does not have a return value. A procedure can therefore end > without a RETURN statement. If you wish to use a RETURN statement to > exit the code early, write just RETURN with no expression. > > If the procedure has output parameters, the final values of the output > parameter variables will be returned to the caller. > " > > So use a function and follow the docs here: > > > https://www.postgresql.org/docs/current/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING > > in particular: > > "42.6.1.2. RETURN NEXT and RETURN QUERY" > > > > > _Working fine with Dynamic UPDATE and DELETE Statement :-_ > > > > __ > > > > _UPDATE:-_ > > > > __ > > > > CREATE OR REPLACE Procedure sp_Update_dynamic_sql( > > > > newvalue varchar(10), > > > > keyvalue integer) > > > > LANGUAGE 'plpgsql' > > > > AS $BODY$ > > > > Declare v_query text; > > > > BEGIN > > > > v_query:= 'update Los_BankInfo set approverid' > > > > || ' = ' > > > > || quote_literal(newvalue) > > > > || ' where pk_id = ' > > > > || quote_literal(keyvalue); > > > > execute v_query; > > > > END; > > > > $BODY$; > > > > --CALL sp_Update_dynamic_sql (john,10); > > > > _DELETE:-_ > > > > __ > > > > CREATE OR REPLACE Procedure sp_Delete_dynamic_sql( > > > > keyvalue integer) > > > > LANGUAGE 'plpgsql' > > > > AS $BODY$ > > > > Declare v_query text; > > > > BEGIN > > > > v_query:= 'delete from Los_BankInfo ' > > > > || ' where pk_id = ' > > > > || quote_literal(keyvalue); > > > > execute v_query; > > > > END; > > > > $BODY$; > > > > --CALL sp_Delete_dynamic_sql(10); > > > > > > > > Regards > > > > Muthu > > > > > > On Mon, Dec 14, 2020, 8:54 PM Adrian Klaver <adrian.kla...@aklaver.com > > <mailto:adrian.kla...@aklaver.com>> wrote: > > > > On 12/13/20 9:59 PM, Muthukumar.GK wrote: > > > Hi team, > > > > > > When I am trying to implement belwo dynamic concept in postgreSql, > > > getting some error. Kindly find the below attached program and > > error. > > > Please advise me what is wrong here.. > > > > > > CREATE OR REPLACE PROCEDURE DynamicProc() > > > > > > AS $$ > > > > > > DECLARE v_query TEXT; > > > > > > C1 refcursor := 'result1'; > > > > > > begin > > > > > > v_query := ''; > > > > > > v_query := ' OPEN C1 FOR SELECT * FROM public."Bankdetails"'; > > > > > > EXECUTE (v_query); > > > > > > END; > > > > > > $$ > > > > > > Language plpgsql; > > > > > > Calling procedure :- > > > > > > -------------------------------- > > > > > > CALL DynamicProc(); > > > > > > FETCH ALL IN "result1"; > > > > > > > > > Error :- > > > > > > -------------- > > > > > > ERROR: syntax error at or near "OPEN" > > > > > > LINE 1: OPEN C1 FOR SELECT * FROM public."Los_BankInfo" ^ > > > > > > QUERY: OPEN C1 FOR SELECT * FROM public."Los_BankInfo" > > > > > > CONTEXT: PL/pgSQL function dynamicproc() line 9 at EXECUTE SQL > > state: 42601 > > > > Two things: > > > > 1) The error is from a different version of the procedure then the > > code. > > The table name is different. Can't be sure that this is the only > > change. > > So can you synchronize your code with the error. > > > > 2) Take a look here: > > > > https://www.postgresql.org/docs/12/plpgsql-cursors.html > > <https://www.postgresql.org/docs/12/plpgsql-cursors.html> > > > > 42.7.2. Opening Cursors > > > > For why OPEN is plpgsql specific and how to use it. > > > > > > > > > > > Regards > > > > > > Muthukumar.gk > > > > > > > > > -- > > Adrian Klaver > > adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com> > > > > > -- > Adrian Klaver > adrian.kla...@aklaver.com > > >