日期:2014-05-17  浏览次数:21055 次

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

------解决方案--------------------
这样说就清楚多了嘛

下面的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';

------解决方案--------------------
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
------解决方案--------------------
不过我估计你 要的 应该是下面这个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';

------解决方案--------------------
引用:
Quote: 引用:

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

这个给我我灵感,我一开始和这写的差不多,就差那个查10的字段了!待我一试!


你这个10 不就是在原来5的基础上+传进来的5吗??

------解决方案--------------------
引用:
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


基本语法都搞不会?

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