使用shell脚本在SQL中插入数据

时间:2016-07-27 15:07:53

标签: sql oracle shell

我有一个有3列的表:

Year--------- |------ Start_seq ----- |--------- End_Seq-----------

我希望以这样的方式填充数据:

1 - 如果存在年份,即2016年是否存在年份,则仅更新end_seq

year start_seqend_seq

2 - 如果年份不存在,则在该表中插入该年份的条目

我必须在shell脚本中处理所有这些。

我能够做到这一点:

   Declare variable_out varchar2(5);

     begin

      SELECT count(*) into variable_out FROM ar9_glext_report_seq WHERE year=2017 

        if variable_out ==1
        update ar9_glext_report_seq
        set FileSeqNumberEnd = FileSeqNumberEnd +1
        where year=2017
        commit ;

        else

         insert into ar9_glext_report_seq values (2017 , 0001, 0001);
         commit;

请帮忙。

谢谢:)

1 个答案:

答案 0 :(得分:0)

您可以使用MERGE语句(oracle文档https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm)。

MERGE INTO ar9_glext_report_seq D
USING (SELECT newyear as y, newstart as start, newend as end FROM dual) S
ON (D.year= S.y)
WHEN MATCHED THEN UPDATE SET D.End_Seq = S.start
WHEN NOT MATCHED THEN INSERT (D.year, D.Start_Seq, D.End_Seq)
  VALUES (S.y, S.start, S.end)

在USING statment中修改查询以选择正确的值。 对不起,我无法测试。