Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

PAraMetros por Omision en Procedure

Estas en el tema de PAraMetros por Omision en Procedure en el foro de SQL Server en Foros del Web. HOla amigos... tengo una duda, haber si se puede. En la programacion orientada a objetos la constructora de una clase puede recibir parametros por omisión. ...
  #1 (permalink)  
Antiguo 07/11/2006, 16:19
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Pregunta PAraMetros por Omision en Procedure

HOla amigos... tengo una duda, haber si se puede. En la programacion orientada a objetos la constructora de una clase puede recibir parametros por omisión. Siguiendo el mismo concepto, un procedimiento almacenado también puede recibir parámetros con dichas carácteristicas?
  #2 (permalink)  
Antiguo 07/11/2006, 20:32
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
mmmhhhhh tu lo has dicho, en POO existe la sobre carga de métodos, y bueno, tenemos la bonita característica de VB de parámetros opcionales que es bastante aberrante definitivamente no creo que puedas sobrecargar un SP, podrías en todo caso asignarles un valor por default a esos parámetros.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 08/11/2006, 05:45
 
Fecha de Ingreso: septiembre-2006
Mensajes: 13
Antigüedad: 17 años, 8 meses
Puntos: 0
Puedes indicar parámatros opcionales

Al definir los parámetros sólo tienes que asignarles un valor que será el valor por defecto

CREATE PROCEDURE [MIPROCEDURE]
PARAMETRO1 AS VARCHAR(50),
PARAMETRO2 AS INT=1,
PARAMETRO3 AS VARCHAR(50)=''
AS
...


Aquí los parámetros PARAMETRO1 y PARAMETRO2 son opcionales, si no indicas nada tomarán el valor que has indicado por defecto.

Un saludo,
Jose Sanchez Carvajal
[email protected]
  #4 (permalink)  
Antiguo 08/11/2006, 09:17
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por u_goldman Ver Mensaje
mmmhhhhh tu lo has dicho, en POO existe la sobre carga de métodos, y bueno, tenemos la bonita característica de VB de parámetros opcionales que es bastante aberrante definitivamente no creo que puedas sobrecargar un SP, podrías en todo caso asignarles un valor por default a esos parámetros.
Pretendo hacer una sobrecarga de operadores

Cita:
Iniciado por jsanchezc Ver Mensaje
Al definir los parámetros sólo tienes que asignarles un valor que será el valor por defecto

CREATE PROCEDURE [MIPROCEDURE]
PARAMETRO1 AS VARCHAR(50),
PARAMETRO2 AS INT=1,
PARAMETRO3 AS VARCHAR(50)=''
AS
...


Aquí los parámetros PARAMETRO1 y PARAMETRO2 son opcionales, si no indicas nada tomarán el valor que has indicado por defecto.

Un saludo,
Jose Sanchez Carvajal
[email protected]
Según lo que veo los parámetros opcionales acaso no serían el parametro2 y parametro3 ya que tienen valores por defecto?

Y si es así, entoces ¿yo podría hacer lo siguiente?:

Código:
Exec MIPROCEDURE 'MyString'
Tomando los valores por defecto para el segundo y tercer parámetro, y tambien:

Código:
Exec MIPROCEDURE 'MyString', 5
Donde 5 es el valor que tomaría el segundo parámetro y como no le envio tercer parámetro tomará el valor por defecto
  #5 (permalink)  
Antiguo 08/11/2006, 10:34
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Cita:
Iniciado por u_goldman Ver Mensaje
definitivamente no creo que puedas sobrecargar un SP, podrías en todo caso asignarles un valor por default a esos parámetros.
Cita:
Iniciado por jsanchezc Ver Mensaje
Al definir los parámetros sólo tienes que asignarles un valor que será el valor por defecto
Es eso, pero supongo que no es lo que pretende...y al final la verdad tampoco le he encontrado mucha utilidad a esto.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 08/11/2006, 13:45
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
si puedo hacer la llamada enviandole tan solo los parametros que no tienen valores por defecto entonces es lo que necesito
  #7 (permalink)  
Antiguo 08/11/2006, 14:14
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Pues entonces no veo relación alguna entre un parámetro opcional y hacer una sobrecarga como lo podrías hacer en POO.

La solución que se sugiere es simplemente tener un valor por defecto, en tanto una sobrecarga sugiere invocar distintas acciones dependiendo de que método se llame pero que al proceso que llame este método le de igual. Y ya que estamos hablando de esto, me surge la duda...por qué quisieras enviar parámetros opcionales?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 08/11/2006, 15:59
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por u_goldman Ver Mensaje
Pues entonces no veo relación alguna entre un parámetro opcional y hacer una sobrecarga como lo podrías hacer en POO.

La solución que se sugiere es simplemente tener un valor por defecto, en tanto una sobrecarga sugiere invocar distintas acciones dependiendo de que método se llame pero que al proceso que llame este método le de igual. Y ya que estamos hablando de esto, me surge la duda...por qué quisieras enviar parámetros opcionales?
que tal golman... bueno pos, tu fuiste el primero que utilizó el termino sobrecarga, yo mencioné parámetros por omisión, aunque también se semeja a la sobrecarga ya que una función sobrecargada en realidad son varias funciones que tienen el mismo nombre pero con diferente numero y tipo de parámetros de entrada y/o de salida (aunque de salida es solo uno o ninguno), y lo que yo necesito es poder llamar a un procedimiento enviandoles 1, 2, o 3 parámetros, y si no le envio uno de ellos que tome un valor por default
  #9 (permalink)  
Antiguo 08/11/2006, 16:54
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Que tal dev009, tienes razón yo utilicé el término sobrecarga primero -era la hora del delirio -, que como bien lo explicaste es un término distinto, lo que sucede con los parámetros por omisión es que le permites a tu método decidir que tarea ejecutar de acuerdo al valor que tomen sus parámetros y bla bla bla, pero esto me lleva a la pregunta anterior -Por qué querer utilizar parámetros opcionales?-, personalmente no le veo mucha utilidad, digo quizás estoy viendo mal las cosas, pero sobre todo en SPs, ya que crean otra capa de mantenimiento en tu aplicación, yo prefiero mantenerlos lo mas "honesto" que se pueda, y creo que en la mayoría de los casos puedes evitar hacer algo como crear parámeros opcionales, por eso de mi pregunta anterior, que opinas?

Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 09/11/2006, 09:13
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
La cosa es que donde trabajo la gente de inventario me hizo un procedimiento al cual tengo que invocar desde mi modulo enviandole un parámetro. Luego, para ajustar el procedimiento para que lo utilice tambien otro modulo, dicho módulo necesita enviarle dos parámetros, pero yo ya lo tengo programado con un solo parámetro y ahora el procedimiento necesita dos parámetros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:50.