Oracle 存储过程传进去一个s_id查询出一条或多条数据,想要在原表中新增这几条数据,改变几个字段值!在一个存储过程中实现,sql可以怎么写?存储Oraclesql

解决方案 »

  1.   

    打个比方
    操作表  student  字段(s_id, s_name, s_sex, c_id)
    操作前的表中的值: 
    s_id    s_name    s_sex    c_id
     1       张三        1        5
     2       李四        2        5
     3       王五        1        6
    查询c_id = 5  有两条数据,然后在表中新增查出来的两条数据后就变成:
      1       张三        1        5
      2       李四        2        5
      3       王五        1        6
      4       张三        1        10
      5       李四        2        10            
      

  2.   

    这样说就清楚多了嘛下面的sql可以?  insert into student as
        select t.s_id, t.s_name, t.s_sex, t.c_id * 2 c_id
          from student t
         where t.c_id = '5';
      

  3.   

    insert into 
    student  values(s_id, s_name, s_sex, c_id)
    select s_id,s_name,s_sex,10
    from student
    where c_id=5
      

  4.   

    不过我估计你 要的 应该是下面这个sql;
    insert into student 
        select t.s_id,
               t.s_name,
               t.s_sex,
               case
                 when count(t.c_id) over(partition by c_id) = 1 then
                  t.c_id
                 else
                  t.c_id * count(t.c_id) over(partition by c_id)
               end c_id
          from student t
         where t.c_id = '5';
      

  5.   


    不是新增c_id的值是传进去的和其他字段的值没关系!
      

  6.   

    insert into  student  values(s_id, s_name, s_sex, c_id)
     select 5 s_id ,s_name,s_sex,10 c_id from student where c_id=5
    s_id是主键,执行为什么就不行了了?plsql中报ORA-00933:SQL command not properly ended
      

  7.   

    这个给我我灵感,我一开始和这写的差不多,就差那个查10的字段了!待我一试!你这个10 不就是在原来5的基础上+传进来的5吗??

    这个值不一定,我只是随便写的一个,引用的其他表的id  需要传进来的!
    insert into  student  values(s_id, s_name, s_sex, c_id)
      select 5 s_id ,s_name,s_sex,10 c_id from student where c_id=5
     s_id是主键,执行为什么就不行了了?
    报ORA-00933:SQL command not properly ended  
      

  8.   


    基本语法都搞不会?insert into student
      (s_id, s_name, s_sex, c_id)
      select 5 s_id, s_name, s_sex, 10 c_id from student where c_id = 5
      

  9.   

    哈哈哈  刚找出来了,照着上面的写,把后面的那个values写上去了!应该不要的
      

  10.   


    基本语法都搞不会?insert into student
      (s_id, s_name, s_sex, c_id)
      select 5 s_id, s_name, s_sex, 10 c_id from student where c_id = 5

    哇,一眼就被你看出来了,真厉害!