Thread: running scripts like oracle sqlplus

running scripts like oracle sqlplus

From
Steven Dahlin
Date:
I have been trying to figure out how I can run a pgsql script like I can run a plsql script with oracle's sqlplus. 
Hereis a sample script file for what I want to run:<br /><br />declare<br />  sysuserid integer := 0;<br />  hwcustid 
integer:= 0;<br /> begin<br /><br />select nextval( 'user_seq' ) into  sysuserid;<br />select nextval( 'customer_seq'
) into hwcustid;<br /><br />insert into user<br />(<br />  user_id,<br />  customer_id,<br />  create_user,<br /> 
update_user<br/> )<br />values<br />(<br />  sysuserid,<br />  hwcustid,<br />  sysuserid,<br />  sysuserid<br />);<br
/><br/>insert into customer<br />(<br />  customer_id,<br />  create_user,<br />  update_user<br />)<br />values<br
/>(<br/>  hwcustid,<br />  sysuserid,<br />   sysuserid<br />);<br /><br />commit;  <br /><br />end;<br /><br />I try
torun the script in psql and thru pgadmin and cannot seem to make them work.  I do not want to turn it into a
function. I just want it to execute the block in a fashion similar to Oracle'sqlplus running @scriptfile.sql.<br /><br
/>Thanks<br/> 

Re: running scripts like oracle sqlplus

From
Kenneth Marshall
Date:
On Fri, Jun 18, 2010 at 04:24:18PM -0600, Steven Dahlin wrote:
> I have been trying to figure out how I can run a pgsql script like I can run
> a plsql script with oracle's sqlplus.  Here is a sample script file for what
> I want to run:
> 
> declare
>   sysuserid integer := 0;
>   hwcustid  integer := 0;
> begin
> 
> select nextval( 'user_seq' ) into  sysuserid;
> select nextval( 'customer_seq' ) into  hwcustid;
> 
> insert into user
> (
>   user_id,
>   customer_id,
>   create_user,
>   update_user
> )
> values
> (
>   sysuserid,
>   hwcustid,
>   sysuserid,
>   sysuserid
> );
> 
> insert into customer
> (
>   customer_id,
>   create_user,
>   update_user
> )
> values
> (
>   hwcustid,
>   sysuserid,
>   sysuserid
> );
> 
> commit;
> 
> end;
> 
> I try to run the script in psql and thru pgadmin and cannot seem to make
> them work.  I do not want to turn it into a function.  I just want it to
> execute the block in a fashion similar to Oracle'sqlplus running
> @scriptfile.sql.
> 
> Thanks

I think you will need to wait for version 9.0 and anonymous functions
using DO.

Cheers,
Ken


Re: running scripts like oracle sqlplus

From
Brian Sherwood
Date:
<br />Have you tried nextval & currval?<br /><a
href="http://www.postgresql.org/docs/8.4/interactive/functions-sequence.html">http://www.postgresql.org/docs/8.4/interactive/functions-sequence.html</a> 
<br/><br />Something like this:<br /><br /><br />begin<br /><br />insert into user<br />(<br />  user_id,<br /> 
customer_id,<br/>  create_user,<br />  update_user<br /> )<br />values<br />(<br />  nextval(user_seq),<br /> 
nextval(customer_seq),<br/>  currval(user_seq),<br />  currval(user_seq)<br />);<br /><br />insert into customer<br
/>(<br/>  customer_id,<br />  create_user,<br />  update_user<br />)<br />values<br />(<br /> 
currval(customer_seq),<br/>  currval(user_seq),<br />   currval(user_seq)<br />);<br /><br />commit;  <br /><br
/>end;<br/><br /><br /><br /><br /><br /><div class="gmail_quote">On Fri, Jun 18, 2010 at 6:24 PM, Steven Dahlin <span
dir="ltr"><<ahref="mailto:pgdb.sldahlin@gmail.com">pgdb.sldahlin@gmail.com</a>></span> wrote:<br /><blockquote
class="gmail_quote"style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">I
havebeen trying to figure out how I can run a pgsql script like I can run a plsql script with oracle's sqlplus.  Here
isa sample script file for what I want to run:<br /><br />declare<br />  sysuserid integer := 0;<br />  hwcustid 
integer:= 0;<br /> begin<br /><br />select nextval( 'user_seq' ) into  sysuserid;<br />select nextval( 'customer_seq'
) into hwcustid;<br /><br />insert into user<br />(<br />  user_id,<br />  customer_id,<br />  create_user,<br /> 
update_user<br/> )<br />values<br />(<br />  sysuserid,<br />  hwcustid,<br />  sysuserid,<br />  sysuserid<br />);<br
/><br/>insert into customer<br />(<br />  customer_id,<br />  create_user,<br />  update_user<br />)<br />values<br
/>(<br/>  hwcustid,<br />  sysuserid,<br />   sysuserid<br />);<br /><br />commit;  <br /><br />end;<br /><br />I try
torun the script in psql and thru pgadmin and cannot seem to make them work.  I do not want to turn it into a
function. I just want it to execute the block in a fashion similar to Oracle'sqlplus running @scriptfile.sql.<br /><br
/>Thanks<br/></blockquote></div><br />