如何进行更新,然后选择PL / SQL

时间:2018-09-21 06:22:43

标签: oracle plsql

我需要更新一张桌子,然后我要查看动作结果。如何使用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

1 个答案:

答案 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';