Array
(
)

Duvida Cursores

Vani Sales
   - 01 jun 2013

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ó, é possível 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))