Обсуждение: running scripts like oracle sqlplus
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/>
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
Have you tried nextval & currval?
http://www.postgresql.org/docs/8.4/interactive/functions-sequence.html
Something like this:
begin
insert into user
(
user_id,
customer_id,
create_user,
update_user
)
values
(
nextval(user_seq),
nextval(customer_seq),
currval(user_seq),
currval(user_seq)
);
insert into customer
(
customer_id,
create_user,
update_user
)
values
(
currval(customer_seq),
currval(user_seq),
currval(user_seq)
);
commit;
end;
On Fri, Jun 18, 2010 at 6:24 PM, Steven Dahlin <pgdb.sldahlin@gmail.com> 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