none
Cursores RRS feed

  • Pergunta

  • Olá, estou com dificuldades para realizar a seguinte função:

    o banco é composto pelas tabelas, aluno(, curso, disciplina, aluno_disciplina, e aluno_curso

    é preciso Fazer um cursor em uma função que gere uma tabela para cada aluno de cada curso,
    contendo:
    RA_Aluno | Nome_Aluno| Nome_Disciplina| Carga_Horária| Nota |Ano_Conclusão| Curso

    O codigo que eu fiz, mostra tudo em uma tabela só, é possivel gerar uma tabela para cada aluno?

    o codigo q eu fiz:

    create function fn_alunos()
    returns @tabela table(
    nome varchar(100),
    disciplina varchar(100),
    cargaHoraria int,
    nota int,
    anoConclu int,
    curso varchar(100)
    )
    as
    begin
    DECLARE @ra INT
    DECLARE @nome VARCHAR(100)
    DECLARE @disciplina VARCHAR(100)
    DECLARE @cargaHoraria INT
    DECLARE @nota INT
    DECLARE @anoConclu INT
    DECLARE @curso VARCHAR(100)

    DECLARE buscaAluno_cursor cursor for SELECT  fk_cd_aluno FROM aluno_disciplina
    OPEN buscaAluno_cursor 

    FETCH NEXT FROM buscaAluno_cursor INTO @ra
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SELECT 
    @nome = aluno.nome,
    @disciplina= disciplina.nome,
    @cargaHoraria = disciplina.carga_horaria,
    @nota = aluno_disciplina.nota,
    @anoConclu = aluno_disciplina.ano_conclusao,
    @curso = curso.nome
    from
    aluno
    inner join aluno_disciplina on aluno.ra = aluno_disciplina.fk_cd_aluno
    inner join aluno_curso on aluno.ra = aluno_curso.fk_cd_aluno
    inner join disciplina on disciplina.codigo = aluno_disciplina.fk_cd_disciplina 
    inner join curso on curso.codigo = disciplina.fk_cd_curso
    where aluno.ra = @ra

    INSERT INTO @tabela VALUES (@nome, @disciplina, @cargaHoraria, @nota,@anoConclu,@curso)

    FETCH NEXT FROM buscaAluno_cursor INTO @ra
    END
    CLOSE buscaAluno_cursor
    DEALLOCATE buscaAluno_cursor
    RETURN 
    END

    SELECT * FROM fn_alunos()

    -- tabelas
    CREATE TABLE aluno(
    ra int not null primary key,
    nome varchar(100) null,
    endereco varchar(100) null,
    telefone varchar(11) null)

    CREATE TABLE curso(
    codigo int not null primary key,
    nome varchar(100) null)

    CREATE TABLE disciplina(
    codigo int not null primary key,
    nome varchar(100) null,
    carga_horaria int null,
    fk_cd_curso int not null,

    FOREIGN KEY (fk_cd_curso) REFERENCES curso(codigo))

    CREATE TABLE aluno_curso(
    fk_cd_aluno int not null,
    fk_cd_curso int not null,

    FOREIGN KEY (fk_cd_aluno) REFERENCES aluno(ra),
    FOREIGN KEY (fk_cd_curso) REFERENCES curso(codigo))

    CREATE TABLE aluno_disciplina(
    fk_cd_aluno int not null,
    fk_cd_disciplina int not null,
    nota int null,
    ano_conclusao int null,

    FOREIGN KEY (fk_cd_aluno) REFERENCES aluno(ra),
    FOREIGN KEY (fk_cd_disciplina) REFERENCES disciplina(codigo))

    sábado, 1 de junho de 2013 21:38

Todas as Respostas