Parametrizar valores en un procedimiento almacenado

06/12/2004 - 19:00 por jjmagro | Informe spam
A ver a ver... me da un poco de verguenza esta consulta
que voy a hacer, ya que estuve viendo el nivel de las
consultas que se hacen y por lo que me doy cuenta son de
un nivel bastante mayor a lo que me convoca...
Tengo en una BDD varios procedimientos almacenados que,
entre otras cosas, hacen consultas de seleccion,
actualizacion, etc. y una de las condiciones WHERE es:

WHERE IdSistema = 1

Esto afecta lo que se haga a todos los registros donde el
registro IdSistema sea igual a 1 (me maté)

Actualmente como ven este valor es "en duro" y lo que
quiero hacer es que esto sea un valor tomado de algun
lugar (una tabla por ejemplo), asi, el dia de mañana, si
se me ocurre que IdSistema sea 2, no tengo que andar
cambiando todos y cada uno de los Proc. Almacenados, la
idea mia es crear una tabla que diga "Sistemas" y que
tenga los campos IdSistema y DescSistema.

Mi pregunta en definitiva es "qué tengo que hacer
(escribir) en mis proc. almacenados para que en vez de
que sea un valor en duro, sea un valor parametrizado de
otra tabla?" algo como por ejemplo:

WHERE IdSistema = @IdSistema
o
WHERE IdSistema = sistema.idsistema

Como verán, estoy mas perdido que pulga en perro de
porcelana, confieso que no sé mucho de sintaxis en SQL y
por eso les escribo, estoy leyendo los Libros
electronicos pero como dan para rato, y esto lo necesito
urgente, decidí escribirles para ver si alguien se digna
descender del paraiso del conocimiento para ayudar a este
neófito en la materia...

Muchas gracias desde ya

Preguntas similare

Leer las respuestas

#1 Maxi
06/12/2004 - 19:17 | Informe spam
Hola, si haces una tabla que contenga los ID podrias usar algo asi como:

Select campos from tabla1 where id in (select id from tablasistemas)

Un abrazo y espero te sea de utilidad

pd: nunca tengas verguenza en preguntar ni mucho menos, aqui estamos para
ayudar y tratar de solucionar los problemas de de ustedes sea el que sea y
este a nuestro alcance en conocimientos :)


Salu2
Maxi


"jjmagro" escribió en el mensaje
news:17db01c4dbbd$86690d30$
A ver a ver... me da un poco de verguenza esta consulta
que voy a hacer, ya que estuve viendo el nivel de las
consultas que se hacen y por lo que me doy cuenta son de
un nivel bastante mayor a lo que me convoca...
Tengo en una BDD varios procedimientos almacenados que,
entre otras cosas, hacen consultas de seleccion,
actualizacion, etc. y una de las condiciones WHERE es:

WHERE IdSistema = 1

Esto afecta lo que se haga a todos los registros donde el
registro IdSistema sea igual a 1 (me maté)

Actualmente como ven este valor es "en duro" y lo que
quiero hacer es que esto sea un valor tomado de algun
lugar (una tabla por ejemplo), asi, el dia de mañana, si
se me ocurre que IdSistema sea 2, no tengo que andar
cambiando todos y cada uno de los Proc. Almacenados, la
idea mia es crear una tabla que diga "Sistemas" y que
tenga los campos IdSistema y DescSistema.

Mi pregunta en definitiva es "qué tengo que hacer
(escribir) en mis proc. almacenados para que en vez de
que sea un valor en duro, sea un valor parametrizado de
otra tabla?" algo como por ejemplo:

WHERE IdSistema = @IdSistema
o
WHERE IdSistema = sistema.idsistema

Como verán, estoy mas perdido que pulga en perro de
porcelana, confieso que no sé mucho de sintaxis en SQL y
por eso les escribo, estoy leyendo los Libros
electronicos pero como dan para rato, y esto lo necesito
urgente, decidí escribirles para ver si alguien se digna
descender del paraiso del conocimiento para ayudar a este
neófito en la materia...

Muchas gracias desde ya
Respuesta Responder a este mensaje
#2 ulises
06/12/2004 - 19:34 | Informe spam
Considero más práctico que esos valores sean pasados a
través de los propios parámetros del sp:

CREATE PROCEDURE bu_consultaarTabla ( @tipo varchar(1) )
AS
SELECT campos FROM TABLE WHERE IdSistema = @tipo

y esto es perfectamente combinable con el hecho de tener
una tabla general de parámetros que pueden ser leidos
previamente por el aplicativo que los usa y ser pasados en
le invocación de los procedimientos almacenados.

Saludos,
Ulises

A ver a ver... me da un poco de verguenza esta consulta
que voy a hacer, ya que estuve viendo el nivel de las
consultas que se hacen y por lo que me doy cuenta son de
un nivel bastante mayor a lo que me convoca...
Tengo en una BDD varios procedimientos almacenados que,
entre otras cosas, hacen consultas de seleccion,
actualizacion, etc. y una de las condiciones WHERE es:

WHERE IdSistema = 1

Esto afecta lo que se haga a todos los registros donde el
registro IdSistema sea igual a 1 (me maté)

Actualmente como ven este valor es "en duro" y lo que
quiero hacer es que esto sea un valor tomado de algun
lugar (una tabla por ejemplo), asi, el dia de mañana, si
se me ocurre que IdSistema sea 2, no tengo que andar
cambiando todos y cada uno de los Proc. Almacenados, la
idea mia es crear una tabla que diga "Sistemas" y que
tenga los campos IdSistema y DescSistema.

Mi pregunta en definitiva es "qué tengo que hacer
(escribir) en mis proc. almacenados para que en vez de
que sea un valor en duro, sea un valor parametrizado de
otra tabla?" algo como por ejemplo:

WHERE IdSistema = @IdSistema
o
WHERE IdSistema = sistema.idsistema

Como verán, estoy mas perdido que pulga en perro de
porcelana, confieso que no sé mucho de sintaxis en SQL y
por eso les escribo, estoy leyendo los Libros
electronicos pero como dan para rato, y esto lo necesito
urgente, decidí escribirles para ver si alguien se digna
descender del paraiso del conocimiento para ayudar a este
neófito en la materia...

Muchas gracias desde ya


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida