我要写一个存储过程给俩个参数一个班级id(int)一个班级的状态,(varchar)数据结构图如下
create table classinfo
(
   cid int primary key,
   className varchar(50),
   address varchar(500),
  state varchar(50)--上午,下午
)go
create table student 
(
 sid int primary key ,
cid  int foreign key references
 sname varchar(50),
)
谁能帮我写段存储过程我要获得根据班级编号以及班级状态的学生
显示班级名称状态下的所有学生就OK 我要在java中调用 知道的快些回复现行谢过,对了我要显示的的数据是;;班级名称,学生姓名,学生地址补充下我们项目的时候主页的数据量挺打访问也很频繁,所以一就要等1只5分满的很所以我想用存储过程优化下知道的跟点意见谢谢

解决方案 »

  1.   

    select a.classname,b.sname from classinfo a,student b where a.cid=b.cid and a.cid='班级ID';学生地址没有啊....
    就这样就可以了,没必要写过程.
    或者建个VIEW,就方便多了.
      

  2.   

    学生地址没有啊,你有学生表加上学生地址就可以了;
    按你的意思,直接写个sql语句就达到要求;select a.classname,b.sname ,b.地址
    from classinfo a
    left join student b
    on a.cid=b.cid
    where a.classname='班级名称';
      

  3.   

    sql语句我会写我只想想让你们帮我写一存储过程 应为一个项目一条sql语句经常被访问所以效率慢的很要等3分左右感觉是访问多在加上数据量大 以前用过sql2000知道存储过程要快,所以我想优化一下但是Oracle里的存储过程跟sql中不一样所以想问下Oracle中怎么创建存储过程给个完整的过程语句就可以 能运行马上给分 谢谢 简单的表知道怎么写就行
    表 student(id,name,sex,address)
    根据sex参数获性别获得所有那个性别的人
    在sql中
    create procedure proc_student
     @sex varchar(50)
    as
    begin
    select * from student where sex =@sex
    end
    Oracle中怎么写 给个完整的Oracle过程能运行马上给分谢谢
      

  4.   

    CREATE OR REPLACE PROCEDURE PROC_STUDENT
    (SEX  VARCHAR2)
    AS 
    STU VARCHAR2(100);
    BEGIN
    SELECT  NAME INTO   STU  FROM test2 WHERE ID =SEX;
    DBMS_OUTPUT.put_line(STU);
    END;如果需要输出结果,必须insert into 或DBMS_OUTPUT.
      

  5.   

    如果一定要用存储过程的话,我是这样写的
    create or replace package P_Student
    as
    type type_cur is ref cursor;
    procedure Pro_Student(b_id in integer,b_state in varchar2,o_cur out type_cur);
    end P_Student;create or replace package body P_Student
    as
    procedure Pro_Student(b_id in integer,b_state in varchar2,o_cur out type_cur)
    as
    strsql varchar2(2000);
    begin
    strsql:='select c.className,s.sname,s.saddress from classinfo c,students s where s.cid=c.cid and c.cid='|| b_id ||' and c.state='|| b_state ||'';
    open o_cur for strsql;
    end Pro_Student;
    end P_Student;