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

Parámetros con valores por defecto

Estas en el tema de Parámetros con valores por defecto en el foro de SQL Server en Foros del Web. Muy buenas. A la hora de crear un procedimiento almacenado ¿cómo puedo definir que algunos parámetros tengan valores por defecto? Por ejemplo: Código: CREATE PROCEDURE ...
  #1 (permalink)  
Antiguo 28/03/2006, 04:38
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Parámetros con valores por defecto

Muy buenas.

A la hora de crear un procedimiento almacenado ¿cómo puedo definir que algunos parámetros tengan valores por defecto?

Por ejemplo:

Código:
CREATE PROCEDURE SP_PA
(
   @param1 int,
   @param2 int
)
AS
BEGIN
...
END
si hago esto EXEC SP_PA 2,54 no hay problemas, pero si pongo EXEC SP_PA 2 lógicamente me da un error de que no se han definido todos los parametros. Me gustaría que por ejemplo param2 sea 54 si no se define en la llamada.

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 28/03/2006, 11:21
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
Asi

CREATE PROCEDURE SP_PA
(
@param1 int = 2,
@@param2 int = 54
  #3 (permalink)  
Antiguo 29/03/2006, 03:42
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Gracias, lo comprobaré.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 29/03/2006, 18:32
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Cita:
Iniciado por Bravenap
Gracias, lo comprobaré.

Un saludo.
Así que por aquí andas Bravenap , ya no sabemos nada de tí en el foro que te vió nacer, jeje , veo que sigues siendo cauteloso al recibir respuestas .
  #5 (permalink)  
Antiguo 30/03/2006, 00:58
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Estupendo, , funciona perfectamente. Muchas gracias monkyta.

Myakire, je je. Gusto saludarte. Como suelen decir, las virtudes son prudencia, templanza, fortaleza y justicia. Al menos sé que algo de la primera tengo.

Un saludo a los dos.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #6 (permalink)  
Antiguo 31/03/2006, 04:53
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Ummm.... estoy teniendo algunos problemillas, aunque no es exactamente problema de SQL Server.

Con ese procedimiento puedo poner EXEC SP_PA 2 y EXEC SP_PA 2,45 y ambos funcionan bien. Sin embargo al hacer la llamada desde una aplicación ASP.Net

Código:
Dim param() As SqlClient.SqlParameter = {New SqlClient.SqlParameter("param1", 2)}
        Dim dt As DataTable = OrigenDatos.EjecutaPA("SP_PA", param).Tables(0)        Response.Write(dt.Rows.Count)

        Dim paramDesact() As SqlClient.SqlParameter = {New SqlClient.SqlParameter("param1", 25), New SqlClient.SqlParameter("param2", 45)}
        Dim dtDesact As DataTable = OrigenDatos.EjecutaPA("SP_PA", paramDesact).Tables(0)
        Response.Write("<br>" & dtDesact.Rows.Count)
Me da error en la linea roja:Parameter count does not match Parameter Value count
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #7 (permalink)  
Antiguo 31/03/2006, 10:58
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
De .NET no lo suficiente para ayudarte, quizá solo un par de ligas:
http://www.codeproject.com/useritems...edSearchSP.asp
http://www.sqljunkies.com/Article/4E...AFE7705F9.scuk

ambas hablan de los parametros opcionales desde asp.net

...... pero una forma de salir del problema es mandar igual los dos parámetros pero el "opcional" con un valor X que en el SP te sirva para discernir si lo ocupas o no.

Si, una solución "cucha" pero funciona, jeje
  #8 (permalink)  
Antiguo 03/04/2006, 02:08
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Cita:
Iniciado por Myakire
...... pero una forma de salir del problema es mandar igual los dos parámetros pero el "opcional" con un valor X que en el SP te sirva para discernir si lo ocupas o no.
Claro, eso es lo que hice en un principio, pero si cambiaba algún procedimiento tenía que buscar en todo el proyecto ASP.Net la llamada al mismo y meter los nuevos parámetros, compilarlo todo de nuevo y subirlo al servidor

Miraré los enlaces.

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #9 (permalink)  
Antiguo 04/04/2006, 01:24
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Vale, ya está solucionado. Explico. Estaba utilizando Microsoft.ApplicationBlocks.Data para hacer todas las llamadas a la base de datos. En un módulo había escrito varias funciones entre las que estaban varias sobrecargadas que llamaban a procedimientos almacenados. Éstas daban fallos si faltaban parámetros por definir. No obstante tengo otra más simple que devuelve una tabla al pasarle la consulta SQL. Utilizando esta última puedo poner:

Código:
Dim dt As DataTable = OrigenDatos.DevuelveDT("EXEC SP_PA " & ID)
sin que devuelva fallos. Igualmente, definiendo el parámetro opcional
Código:
Dim dt As DataTable = OrigenDatos.DevuelveDT("EXEC SP_PA " & ID & ",1")
Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
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 22:26.