Foro oficial de SQL

Buenas quiero preguntar, como hago para llevar a una variable el resultado de una consulta.

Digamos tengo una tabla en donde tengo el codigo de un estudiante con su respectivo grado y grupo.

Otra tabla necesita los 3 datos, como puedo hacer para que solo pasando como parametro el codigo del estudiante pueda recuperar los otros datos.

Seria algo como asi:

PHP:
CREATE PROCEDURE sp_ingresar_pago @codigo_estudiante varchar(10) AS
DECLARE 
@grupo int--hace referencia al consecutivo del grupo
@grado int--referencia el consecutivo del grado

SET
@grado=????

Que seguiria ahi?, como obtengo de la tabla matriculas el grupo y grado del estudiante?

Gracias.
 
Buenas quiero preguntar, como hago para llevar a una variable el resultado de una consulta.

Digamos tengo una tabla en donde tengo el codigo de un estudiante con su respectivo grado y grupo.

Otra tabla necesita los 3 datos, como puedo hacer para que solo pasando como parametro el codigo del estudiante pueda recuperar los otros datos.

Seria algo como asi:

PHP:
CREATE PROCEDURE sp_ingresar_pago @codigo_estudiante varchar(10) AS
DECLARE 
@grupo int--hace referencia al consecutivo del grupo
@grado int--referencia el consecutivo del grado

SET
@grado=????

Que seguiria ahi?, como obtengo de la tabla matriculas el grupo y grado del estudiante?

Gracias.

Usando out ;).

Devolver datos mediante parámetros OUTPUT


SuerteX :)
 
  • Me gusta
Reacciones: 2 personas
Hay muchas formas, la complicada:
PHP:
CREATE PROCEDURE sp_ingresar_pago @codigo_estudiante varchar(10) AS

declare @grupo int--hace referencia al consecutivo del grupo
declare @grado int--referencia el consecutivo del grado

select @grupo=grupo, @grado=grado from matriculas where codigo_estudiante = @codigo_estudiante

select @grupo, @grado
Toma los 2 valores que retorna, esto se puede mejorar así:

La normal:
PHP:
CREATE PROCEDURE sp_ingresar_pago @codigo_estudiante varchar(10) AS

select grupo, grado from matriculas where codigo_estudiante = @codigo_estudiante
La anterior ahorra líneas de código y un poco de tiempo de ejecución.

Si lo que quieres son esos 2 valores no es necesario hacer un procedimiento, desde el mismo lenguaje (PHP, VB, C#, etc) puede hacer la consulta y tomar su resultado:
PHP:
select grupo, grado from matriculas where codigo_estudiante = @codigo_estudiante
 
Lo que pasa es que necesito el procedimiento, porque ese procedimiento lo que hace es guardar el pago de un estudiante y el pago necesita tener referencia al grado y grupo, solo que no puse la parte que deberia de seguir.
 
Lo que pasa es que necesito el procedimiento, porque ese procedimiento lo que hace es guardar el pago de un estudiante y el pago necesita tener referencia al grado y grupo, solo que no puse la parte que deberia de seguir.

Entonces es la primera opción que te puse, espero que te sirva.
saludos
:cool:
 
Pregunta sencilla pero no he encontrado nada al respecto, en SQL Server como creo objetos de una tabla que yo mismo he creado, asi como en Oracle uno dice xxx%TYPE no hay forma de hacer algo asi en SQL Server 2008?

Gracias.
 
Pregunta sencilla pero no he encontrado nada al respecto, en SQL Server como creo objetos de una tabla que yo mismo he creado, asi como en Oracle uno dice xxx%TYPE no hay forma de hacer algo asi en SQL Server 2008?

Gracias.

Si en google no encuentras nada parecido, entonces asi no se hace en SQL Server, ¿que intentas hacer?

Yo desconozco Oracle pero conozco bien SQL Server
 
Que yo sepa eso no se hace en SQL, acá puedes declarar cursores a partir de tablas, creo que eso seria lo mas parecido.
:cool:
 
Si en google no encuentras nada parecido, entonces asi no se hace en SQL Server, ¿que intentas hacer?

Yo desconozco Oracle pero conozco bien SQL Server

o sea yo tengo una tabla digamos algo asi:

PHP:
Create table Prueba(
Campo1 int primary key
campo2 int
campo3 int
)

Y quisiera un objeto de ese tipo de tabla, en oracle yo simplemente lo declararia asi:

DECLARE
@objeto Prueba%TYPE

Inemdiatamente @objeto ya tiene todos los campos de la tabla y puedo comenzar a agregarle datos.

Usando cursores como crearia una un objeto con esas mismas caracteristicas?
 
o sea yo tengo una tabla digamos algo asi:

PHP:
Create table Prueba(
Campo1 int primary key
campo2 int
campo3 int
)

Y quisiera un objeto de ese tipo de tabla, en oracle yo simplemente lo declararia asi:

DECLARE
@objeto Prueba%TYPE

Inemdiatamente @objeto ya tiene todos los campos de la tabla y puedo comenzar a agregarle datos.

Usando cursores como crearia una un objeto con esas mismas caracteristicas?

Sera una tabla variable asi???:

Código:
DECLARE @Prueba TABLE (
Campo1 INT PRIMARY KEY,
Campo2 INT,
Campo3 INT)

Y eso es un objeto de tipo tabla, y ya, ¿es eso lo que pides? es que no se que intentas hacer con eso man.
 
Si le vas a agregar datos y todo sería como te explicó Ivan, si lo que necesitas es descargar estructura y datos sería:

PHP:
declare prueba_tempo cursor for
select * from Prueba
open prueba_tempo
/*
instrucciones
*/
close prueba_tempo
 
Hola, hola...
UNa pregunta...como hago para que no salgan repetidos los datos en la sig consulta.

SELECT *
FROM cliente cl INNER JOIN nota n
ON cl.clie_clave = n.clie_clave.

Es decir que no salga esto:

clie_clave nomb_clie .....
09141 Empresa WM, S.A. DE C.V....
09161 DISTRIBUIDORA WER S.A. DE C.V.....
09161 DISTRIBUIDORA WER S.A. DE C.V.....
09161 DISTRIBUIDORA WER S.A. DE C.V.....
09567 TIENDA ROMERO .......

sino esto

clie_clave nomb_clie .....
09141 Empresa WM, S.A. DE C.V....
09161 DISTRIBUIDORA WER S.A. DE C.V.....
09567 TIENDA ROMERO .......

la cardinalidad de mis tablas es
nota * - 1 cliente

Y que esto no sea con distinct, porfavor.

Agradecería enormemente su ayuda...

Gracias!!
 
A eso no le haces un GROUP BY ???

SELECT *
FROM cliente cl INNER JOIN nota n
ON cl.clie_clave = n.clie_clave
GROUP BY cl.clie_clave

¿no? :p Salu2

Hola, hola...
UNa pregunta...como hago para que no salgan repetidos los datos en la sig consulta.

SELECT *
FROM cliente cl INNER JOIN nota n
ON cl.clie_clave = n.clie_clave.

Es decir que no salga esto:

clie_clave nomb_clie .....
09141 Empresa WM, S.A. DE C.V....
09161 DISTRIBUIDORA WER S.A. DE C.V.....
09161 DISTRIBUIDORA WER S.A. DE C.V.....
09161 DISTRIBUIDORA WER S.A. DE C.V.....
09567 TIENDA ROMERO .......

sino esto

clie_clave nomb_clie .....
09141 Empresa WM, S.A. DE C.V....
09161 DISTRIBUIDORA WER S.A. DE C.V.....
09567 TIENDA ROMERO .......

la cardinalidad de mis tablas es
nota * - 1 cliente

Y que esto no sea con distinct, porfavor.

Agradecería enormemente su ayuda...

Gracias!!
 
Señores feliz año.

Tengo una pregunta, si yo tengo varias bases de datos, todas con los mismos campos y necesito hacer una consulta que me traiga un campo de TODAS las bases de datos como lo puedo hacer?.

Gracias.
 
típicamente poniendo algo así:

bd.schema.table.field

ej.

SELECT bd1.schema.table.field, bd2.schema.table.field, etc
FROM bd1.schema.table, bd2.schema.table, etc
WHERE ???

si estan en el mismo servidor, o si no, hay que anteponer le nombre del PC
debido a que queda un "larguero" las sentencias lo que yo hago es crear un SYNONYM para cada tabla, un poco mas de trabajo pero se entiende mejor :p
 
Si todas las bases estan en el mismo servidor, pero son casi 300 bases, lo que quiero es ahorrar un poco de trabajo, depronto hay forma de hacerlo con un cursor o algo asi, porque si no de todas formas me toca copiar el nombre de las 300 bases.
 
ahhh, que que varias es mucho menor que 300 :p:p:p

se podría crear un cursor que obtenga los nombres, pero

1. deberia ser todas las BD en el servidor
2. deberian tener una minima variacion y tener un patron reconocible en el nombre
 
Si todas las bases estan en el mismo servidor, pero son casi 300 bases, lo que quiero es ahorrar un poco de trabajo, depronto hay forma de hacerlo con un cursor o algo asi, porque si no de todas formas me toca copiar el nombre de las 300 bases.

Si.

Tambien lo puedes hacer creando una libreria en .NET e integrandola al SQL Server para que ella te modifique el nombre de la base de datos en el string.
 
Hola buenas tardes amigos, espero estar en el lugar indicado de no ser asi agrdecere me indiquen que hacer, pues nada que tengo un problema que yo no he podido realizar.

Es una consulta en sql que genero con tres tablas activ1, activ2 activ3 usando inner join, la consulta general es asi:

id | actividad | producto | cantidad | fecha_ini | fecha_fin

1 Registrar Revisión 2 04-05-11 30-12-11
2 Analizar Informe 1 25-01-11 26-04-11
2 Analizar Cédula 1 25-03-11 26-06-11
3 Elaborar Formato 23 03-01-11 30-12-11
4 Autorizar Relación 1 25-01-11 26-04-11
4 Autorizar Propuesta 1 25-03-11 26-06-11

bueno, pues los datos se ingresan de manera aleatoria el campo id solo es para identificar los registros y el ordenamiento debe de ser por fecha_ini y fecha_fin ascendete en los dos casos, pero (siempre hay un pero...) el ordenamiento debe de respetar o conservar a los registros por id... no se si me explico la consulta deberia de quedar asi::::


id | actividad | producto | cantidad | fecha_ini | fecha_fin

3 Elaborar Formato 23 03-01-11 30-12-11
2 Analizar Informe 1 25-01-11 26-04-11
2 Analizar Cédula 1 25-03-11 26-06-11
4 Autorizar Relación 1 25-01-11 26-04-11
4 Autorizar Propuesta 1 25-03-11 26-06-11
1 Registrar Revisión 2 04-05-11 30-12-11

noten que la actividad con id 2 y 4 son similares en sus fechas pero el ordenamiento debe de respetar el grupo o conjunto de id donde se encuentra espero ser claro por su tiempo y ayuda muchas gracias....
 

Los últimos temas