Cursores o que? en Oracle

bckl

Lanero Regular
23 Ago 2007
9
Bien antes que todo pido disculpas y tal ves el post esta offtopic no se..
pero tengo un problema bastante curioso que no he podido resolver
he buscado por todos lados pero nada
bien el asunto es el siguiente..tengo una base de datos sencilla para manejar un torneo de futbol la BD tiene una tabla para los equipos, jugadores y una para los partidos

create table partidos(
fecha number(5),
equipo1 number(5),
equipo2 number(5),
gol1 number(4),
gol2 number(4),
dif number(5),
constraint pk_equipos primary key(fecha,equipo1,equipo2),
constraint fk_res_equi1 foreign key (equipo1) references equipos(idequipo),
constraint fk_res_equi2 foreign key (equipo2) references equipos(idequipo)
);

esa es la tabla en cuestion
bien es punto es que hice una consulta (Monstruosa) para obtener las estadisticas de un equipo: Partidos jugados, ganados ,empatado , goles a favor en contra etc etc
el problema es que la consulta me devuelve una sola fila solo la del equipo que elija ...como necesito todas decdi colocar la consulta dentro de un bloque de PL/SQL

Código:
select nombre, 
(select NVL(count(dif),0) from partidos where equipo1=2 or equipo2=2) AS "PJ",
(select PG+PG2 from (select NVL(count(dif),0) AS "PG" from partidos where dif>0 and equipo1=2),(select NVL(count(dif),0) AS "PG2" from partidos where dif<0 and equipo2=2))AS "PG",
(select PP+PP2 from (select NVL(count(dif),0) AS "PP" from partidos where dif<0 and equipo1=2),(select NVL(count(dif),0) AS "PP2" from partidos where dif>0 and equipo2=2)) AS "PP",
(select NVL(count(dif),0) from partidos where dif=0  and (equipo1=2 or equipo2=2))AS "PE",
(select gf+gf2  AS "GolesFavor" from (select  NVL(sum(gol1),0)as "GF" from partidos where  equipo1=2),(select NVL(sum(gol2),0) AS "GF2" from partidos where equipo2=2)) AS "GF",
(select gc+gc2 AS "Golescontra" from (select NVL(sum(gol2),0) AS "GC" from partidos where equipo1=2),(select NVL(sum(gol1),0) AS "GC2" from partidos where equipo2=2)) AS "GC",
(select ((gf+gf2)-(gc+gc2)) AS "DIF"  from (select NVL(sum(gol1),0)as "GF",NVL(sum(gol2),0) AS "GC" from partidos where equipo1=2),(select NVL(sum(gol2),0) AS "GF2",NVL(sum(gol1),0) AS "GC2" from partidos where equipo2=2)) AS "DIF" 
from equipos where idequipo=2;
esa es la consulta

el adjunto PLSQL tiene el bloque de pl/sql
es funciona bien ...lo que necesito es que los resultados de las variables pasarlas a C# de alguna forma ...
lei que con procedimientos almacenados se hace con uno que devuelva un cursor
entonces queda el asunto...como meteria esa consulta asi como esta en un Cursor??
o alguna forma de pasar esa informacion a C#?
 

Archivos adjuntos

  • plsql.txt
    1.8 KB · Visitas: 261