我需要更新一张桌子,然后我要查看动作结果。如何使用PL / SQL?我有这个变体,但是不起作用。
declare
switcher VARCHAR(20);
--step one - update
begin
switcher := &faid;
update table_one.field t1
set t1.str_value = switcher
where t1.name = 'NAME_1';
commit;
end;
--step two - select
begin
select * from table_one.field t1
where t1.name = 'NAME_1'
end
答案 0 :(得分:1)
您不能在PL / SQL块中使用SELECT返回结果。删除选择前的begin
和选择后的end
。
对于UPDATE
语句,您也不能在表中包括列名(非“字段”)。这些列在SET
子句中引用。 FROM
子句中的表引用也是如此。
您还需要其他字符来结束PL / SQL块。在Oracle世界中(sqlplus
,SQL Developer)是that is usually the /
字符。
declare
switcher VARCHAR(20);
--step one - update
begin
switcher := &faid;
update table_one -- only the table name here
set str_value = switcher -- a column can be referenced here
where name = 'NAME_1'; -- and a column can be referenced here
commit;
end;
/
select *
from table_one t1 -- no "field" after the table name here either
where t1.name = 'NAME_1';
但是您实际上并不需要真正使用PL / SQL。假设使用SQL * Plus(或SQL Developer),以下操作同样适用:
update table_one
set str_value = &faid
where name = 'NAME_1';
commit;
select *
from table_one t1
where t1.name = 'NAME_1';