Thread: Stored Procedure Problem
<div class="Section1"><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Hello,</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"><span style="mso-spacerun: yes"> </span>Atul Here, I have one problem while accessing Database Records Or Recordset from stored procedure.Procedure is like this,</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal" style="margin-left:.5in"><span class="EmailStyle15"><font color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial">CREATE FUNCTION b_function() RETURNS int4 AS '</span></font></span><p class="MsoNormal" style="margin-left:.5in"><spanclass="EmailStyle15"><font color="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial">DECLARE</span></font></span><p class="MsoNormal" style="margin-left:.5in"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial"><span style="mso-spacerun: yes"> </span>an_integer int4;</span></font></span><p class="MsoNormal"style="margin-left:.5in"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial">BEGIN</span></font></span><p class="MsoNormal" style="margin-left:.5in"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial"><span style="mso-spacerun: yes"> </span>select emp_id from employee;</span></font></span><p class="MsoNormal"style="margin-left:.5in"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial"><span style="mso-spacerun: yes"> </span>return an_integer;</span></font></span><p class="MsoNormal"style="margin-left:.5in"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial">END;</span></font></span><p class="MsoNormal" style="margin-left:.5in"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial">'</span></font></span><p class="MsoNormal" style="margin-left:.5in"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial">LANGUAGE 'plpgsql';</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">I create the procedure . After that I run the statement like</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal" style="text-indent:.5in"><span class="EmailStyle15"><font color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial">Test=#> select b_function();</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Error comes like</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><b><font color="red" face="Default" size="1"><span style="font-size:8.0pt;font-family:Default;color:red;font-weight:bold">Error:ERROR:<span style="mso-spacerun: yes"> </span>SELECTquery has no destination for result data.</span></font></b><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><b><font color="red" face="Default" size="1"><span style="font-size:8.0pt;font-family:Default;color:red;font-weight:bold"><spanstyle="mso-tab-count:1"> </span>Ifyou want to discard the results, use PERFORM instead.</span></font></b><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><b><font color="red" face="Default" size="1"><span style="font-size:8.0pt;font-family:Default;color:red;font-weight:bold">WARNING:<spanstyle="mso-spacerun: yes"> </span>Erroroccurred while executing PL/pgSQL function b_function</span></font></b><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><b><font color="red" face="Default" size="1"><span style="font-size:8.0pt;font-family:Default;color:red;font-weight:bold">WARNING:<spanstyle="mso-spacerun: yes"> </span>line4 at SQL statement</span></font></b><p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><b><fontcolor="red" face="Default" size="1"><span style="font-size:8.0pt;font-family:Default; color:red;font-weight:bold"> </span></font></b><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Also I use PERFORM statement. But still problem is not resolved.</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Please Help me. I hope your kind co-operation.</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Thanks.</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Atul…</span></font></span></div>
> CREATE FUNCTION b_function() RETURNS int4 AS ' > DECLARE > an_integer int4; > BEGIN > select emp_id from employee; > return an_integer; > END; > ' > LANGUAGE 'plpgsql'; > Try SELECT INTO an_integer emp_id from employee; Regards, Christoph
Hi, use this CREATE FUNCTION b_function() RETURNS int4 AS 'DECLARE an_integer int4;BEGIN select into an_integer emp_id from employee; return an_integer;END;'LANGUAGE 'plpgsql'; --- Atul <atul@imcindia.net> escribió: > Hello, > > Atul Here, I have one problem while > accessing Database > Records Or Recordset from stored procedure. > Procedure is like this, > > CREATE FUNCTION b_function() RETURNS int4 AS ' > DECLARE > an_integer int4; > BEGIN > select emp_id from employee; > return an_integer; > END; > ' > LANGUAGE 'plpgsql'; > > I create the procedure . After that I run the > statement like > > Test=#> select b_function(); > > Error comes like > > Error: ERROR: SELECT query has no destination for > result data. > If you want to discard the results, > use PERFORM instead. > WARNING: Error occurred while executing PL/pgSQL > function b_function > WARNING: line 4 at SQL statement > > Also I use PERFORM statement. But still problem is > not resolved. > > Please Help me. I hope your kind co-operation. > > Thanks. > > Atul > Ahora podés usar Yahoo! Messenger desde tu celular. Aprendé cómo hacerlo en Yahoo! Móvil: http://ar.mobile.yahoo.com/sms.html
<div class="Section1"><p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><font color="black" face="CourierNew" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black">Hi,</span></font><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"CourierNew"; color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><fontcolor="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black"><span style="mso-tab-count:1"> </span>How to return multiple columns through stored procedure.</span></font><fontcolor="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"CourierNew"; color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><fontcolor="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black"> </span></font><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="text-indent:.5in;mso-layout-grid-align:none; text-autospace:none"><b><font color="blue" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"CourierNew";color:blue;font-weight:bold">Consider EX.</span></font></b><p class="MsoNormal"style="mso-layout-grid-align:none;text-autospace:none"><font color="black" face="Courier New" size="2"><spanstyle="font-size:10.0pt;font-family: "Courier New";color:black"> </span></font><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black">CREATEFUNCTION b_function() RETURNS varchar AS '</span></font><font color="black" face="Courier New" size="2"><spanstyle="font-size:10.0pt;font-family:"Courier New"; color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>DECLARE</span></font><font color="black" face="Courier New" size="2"><spanstyle="font-size:10.0pt;font-family:"Courier New"; color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>an_integer int4;</span></font><font color="black" face="CourierNew" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>an_name<span style="mso-spacerun: yes"> </span>varchar;</span></font><fontcolor="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>BEGIN</span></font><font color="black" face="Courier New" size="2"><spanstyle="font-size:10.0pt;font-family:"Courier New"; color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>select into an_integer emp_id,an_name emp_name from employee;</span></font><fontcolor="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"CourierNew"; color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>return an_integer,an_name;</span></font><font color="black" face="CourierNew" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>END;</span></font><font color="black" face="Courier New" size="2"><spanstyle="font-size:10.0pt;font-family:"Courier New"; color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>'</span></font><font color="black" face="Courier New" size="2"><spanstyle="font-size:10.0pt;font-family:"Courier New"; color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal" style="margin-left:.5in;mso-layout-grid-align:none; text-autospace:none"><font color="black" face="Courier New" size="2"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><spanstyle="mso-spacerun: yes"> </span>LANGUAGE 'plpgsql';</span></font><font color="black" face="CourierNew" size="2"><span style="font-size:10.0pt;font-family: "Courier New";color:black;mso-color-alt:windowtext"></span></font><p class="MsoNormal"><span class="EmailStyle15"><font color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">But This Gives Error(For Multiple column , not for single column)</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Please Let me know.</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Thanks</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: Arial">Atul…</span></font></span></div>
Atul wrote: > CREATE FUNCTION b_function() RETURNS varchar AS ' > > DECLARE > > an_integer int4; > > an_name varchar; > > BEGIN > > select into an_integer emp_id,an_name emp_name from employee; > > return an_integer,an_name; > > END; > > ' First: select into an_integer,an_name emp_id,emp_name... Second: you can't return 2 variables from plpgsql function. Tomasz Myrta
On Thu, Dec 12, 2002 at 08:13:22PM +0530, Atul wrote: > Hi, > How to return multiple columns through stored procedure. <snip> > But This Gives Error(For Multiple column , not for single column) > Please Let me know. You didn't say which version of PostgreSQL you are using. In PG 7.2 you can return a cursor. In 7.3 you can return a cursor or a true record set. See http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html (true to 7.2 and 7.3) Also http://developer.postgresql.org/docs/postgres/plpgsql-control-structures.html ("Returning from a function"). The part on returning record sets is only relevant to 7.3 -Roberto -- +----| Roberto Mello - http://www.brasileiro.net/ |------+ + Computer Science Graduate Student, Utah State University + + USU Free Software & GNU/Linux Club - http://fslc.usu.edu/ + :.:..::..:::.:::::..:..:.:..:..::::.:...:: => BRAILE TAGLINE!
In 7.3 you can , in follwoing steps, 1. do a CREATE TYPE (i would recommend to use a sperate schema for storing user defined types) 2. in plpgsql declare the RECORD of that type . 3. populate the record varible according to your business logic and return the RECORD using RETURN statements. hope it will help , if not please revert back. regds mallah. On Thursday 12 December 2002 08:21 pm, Tomasz Myrta wrote: > Atul wrote: > > CREATE FUNCTION b_function() RETURNS varchar AS ' > > > > DECLARE > > > > an_integer int4; > > > > an_name varchar; > > > > BEGIN > > > > select into an_integer emp_id,an_name emp_name from employee; > > > > return an_integer,an_name; > > > > END; > > > > ' > > First: select into an_integer,an_name emp_id,emp_name... > Second: you can't return 2 variables from plpgsql function. > > Tomasz Myrta > > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org -- Rajesh Kumar Mallah, Project Manager (Development) Infocom Network Limited, New Delhi phone: +91(11)6152172 (221) (L) ,9811255597 (M) Visit http://www.trade-india.com , India's Leading B2B eMarketplace.