Inquiridor
Cursores

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| CursoO 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))
Todas as Respostas
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 5 de junho de 2013 14:51
-
-
-
-
Acho que vai precisar de mais de um cursor mesmo
entao, acho que vai precisar de mais de um cursor mesmo..
tambem não achei muito sentido em gerar uma tabela para cada aluno.. mas esta pedindo "fazer um cursor em uma função que gere uma tabela para cada aluno de cada curso"
vou tentar com mais de um cursor, e ver se consigo rs
Obrigada pela ajuda!
-