Procedimiento almacenado para INSERT

13/02/2004 - 01:52 por Gregorio López Rojo | Informe spam
Hola a todos. Estoy diseñando un procedimiento almacenado para insertar
valores en una tabla y es el siguiente:

create procedure spInsertToPartes
@NumParte varchar(50) = NULL,
@DescEsp varchar(150) = NULL,
@DescIng varchar(150) = NULL,
@ipGenero int = NULL,
@idParte int OUTPUT
as
insert into partes
(NumParte, DescEsp, DescIng, ipGenero)
values
(@NumParte, @DescEsp, @DescIng, @ipGenero)

select @idParte = SCOPE_IDENTITY()

Hasta aquí todo bien, pero quiero mejorar este procedimiento para que los
campos que no se especifiquen en la ejecución del procedimiento tengan en
lugar de NULL
el DEFAULT para dichos campos, ¿cómo sería esto?

Saludos y gracias anticipadas.

Preguntas similare

Leer las respuestas

#6 Maximiliano D. A.
13/02/2004 - 15:29 | Informe spam
Hmm te parece facil eso Adrian? me parece que el uso de los IF es mejor y no
debes preocuparte por si cambia un Default o no!!! es cierto debes escribis
mas lineas pero un Copy Paste lo soluciona todo :-D

Salu2
Maximiliano Damian Accotto


"Adrian D. Garcia" escribió en el mensaje
news:%23SBE%
La forma mas facil de realizar esto es modificar el stored procedure para
que quede asi:

create procedure spInsertToPartes
@NumParte varchar(50) = <valor por default1>,
@DescEsp varchar(150) = <valor por default2>,
@DescIng varchar(150) = <valor por default3>,
@ipGenero int = <valor por default4>,
@idParte int OUTPUT
as



Eso si, tendras que fijarte en la definicion de la tabla cuales son los
valores por default de estos campos y ademas si en el futuro cambiaran


estos
valores habria que modificar el stored para reflejar estos cambios.


Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Gregorio López Rojo" wrote in message
news:
> Hola a todos. Estoy diseñando un procedimiento almacenado para insertar
> valores en una tabla y es el siguiente:
>
> create procedure spInsertToPartes
> @NumParte varchar(50) = NULL,
> @DescEsp varchar(150) = NULL,
> @DescIng varchar(150) = NULL,
> @ipGenero int = NULL,
> @idParte int OUTPUT
> as
> insert into partes
> (NumParte, DescEsp, DescIng, ipGenero)
> values
> (@NumParte, @DescEsp, @DescIng, @ipGenero)
>
> select @idParte = SCOPE_IDENTITY()
>
> Hasta aquí todo bien, pero quiero mejorar este procedimiento para que


los
> campos que no se especifiquen en la ejecución del procedimiento tengan


en
> lugar de NULL
> el DEFAULT para dichos campos, ¿cómo sería esto?
>
> Saludos y gracias anticipadas.
>
>


Respuesta Responder a este mensaje
#7 Gregorio López Rojo
13/02/2004 - 18:04 | Informe spam
Gracias a todos. Creo que sí utilizaré IFs, por cuestiones de rendimiento,
aunque aumente mucho el texto del procedimiento almacenado. No podría usar
DEFAULTs en los parámetros porque estos valores variarían para cada cliente
de mi aplicación.

Saludos.

"Gregorio López Rojo" wrote in message
news:
Hola a todos. Estoy diseñando un procedimiento almacenado para insertar
valores en una tabla y es el siguiente:

create procedure spInsertToPartes
@NumParte varchar(50) = NULL,
@DescEsp varchar(150) = NULL,
@DescIng varchar(150) = NULL,
@ipGenero int = NULL,
@idParte int OUTPUT
as
insert into partes
(NumParte, DescEsp, DescIng, ipGenero)
values
(@NumParte, @DescEsp, @DescIng, @ipGenero)

select @idParte = SCOPE_IDENTITY()

Hasta aquí todo bien, pero quiero mejorar este procedimiento para que los
campos que no se especifiquen en la ejecución del procedimiento tengan en
lugar de NULL
el DEFAULT para dichos campos, ¿cómo sería esto?

Saludos y gracias anticipadas.


Respuesta Responder a este mensaje
#8 Maximiliano D. A.
13/02/2004 - 18:16 | Informe spam
No te preocupes por el texto de los Store, eso no es un problema para Sql y
para vos tampoco si sos ordenado ;)

Salu2
Maximiliano Damian Accotto


"Gregorio López Rojo" escribió en el mensaje
news:
Gracias a todos. Creo que sí utilizaré IFs, por cuestiones de rendimiento,
aunque aumente mucho el texto del procedimiento almacenado. No podría usar
DEFAULTs en los parámetros porque estos valores variarían para cada


cliente
de mi aplicación.

Saludos.

"Gregorio López Rojo" wrote in message
news:
> Hola a todos. Estoy diseñando un procedimiento almacenado para insertar
> valores en una tabla y es el siguiente:
>
> create procedure spInsertToPartes
> @NumParte varchar(50) = NULL,
> @DescEsp varchar(150) = NULL,
> @DescIng varchar(150) = NULL,
> @ipGenero int = NULL,
> @idParte int OUTPUT
> as
> insert into partes
> (NumParte, DescEsp, DescIng, ipGenero)
> values
> (@NumParte, @DescEsp, @DescIng, @ipGenero)
>
> select @idParte = SCOPE_IDENTITY()
>
> Hasta aquí todo bien, pero quiero mejorar este procedimiento para que


los
> campos que no se especifiquen en la ejecución del procedimiento tengan


en
> lugar de NULL
> el DEFAULT para dichos campos, ¿cómo sería esto?
>
> Saludos y gracias anticipadas.
>
>


Respuesta Responder a este mensaje
#9 Javier Loria
13/02/2004 - 19:08 | Informe spam
Hola Gregorio:
Si tu aplicacion necesita aplicar diferentes DEFAULT dependiendo de la
configuracion del Cliente, podrias: Usar la informacion de las Tablas de
Sistema/Information_Schema, si vas a cambiar los Defaults de las Tablas, si
no los vas a cambiar puedes tener los Valores DEFAULT en una Tabla propia
para cuando se hace la insercion se puede obtener este valor. En cualquiera
de los casos puedes utilizar funciones (si usas SQL 2000) para facilitar su
uso entonces los INSERT te quedan como:
=INSERT INTO Partes (NumParte, DescEsp, DescIng, ipGenero)
VALUES (@NumParte
, COALESCE(@DescEsp, dbo.ValorDefault('Partes','DescEsp')
, COALESCE(@DescIng, dbo.ValorDefault('Partes','DescIng')
, )
= Un problema de esto es que debes tener una funcion para cada tipo de
datos que usas, pero aun asi creo es mejor que los IF's.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Gregorio López Rojo escribio:
Gracias a todos. Creo que sí utilizaré IFs, por cuestiones de
rendimiento, aunque aumente mucho el texto del procedimiento
almacenado. No podría usar DEFAULTs en los parámetros porque estos
valores variarían para cada cliente de mi aplicación.

Saludos.

"Gregorio López Rojo" wrote in message
news:
Hola a todos. Estoy diseñando un procedimiento almacenado para
insertar valores en una tabla y es el siguiente:

create procedure spInsertToPartes
@NumParte varchar(50) = NULL,
@DescEsp varchar(150) = NULL,
@DescIng varchar(150) = NULL,
@ipGenero int = NULL,
@idParte int OUTPUT
as
insert into partes
(NumParte, DescEsp, DescIng, ipGenero)
values
(@NumParte, @DescEsp, @DescIng, @ipGenero)

select @idParte = SCOPE_IDENTITY()

Hasta aquí todo bien, pero quiero mejorar este procedimiento para
que los campos que no se especifiquen en la ejecución del
procedimiento tengan en lugar de NULL
el DEFAULT para dichos campos, ¿cómo sería esto?

Saludos y gracias anticipadas.
Respuesta Responder a este mensaje
#10 Gregorio López Rojo
13/02/2004 - 20:54 | Informe spam
Gracias Javier, lo malo es que mi aplicación debe soportar SQL 7 y 2000.

Saludos.

"Javier Loria" wrote in message
news:%
Hola Gregorio:
Si tu aplicacion necesita aplicar diferentes DEFAULT dependiendo de la
configuracion del Cliente, podrias: Usar la informacion de las Tablas de
Sistema/Information_Schema, si vas a cambiar los Defaults de las Tablas,


si
no los vas a cambiar puedes tener los Valores DEFAULT en una Tabla propia
para cuando se hace la insercion se puede obtener este valor. En


cualquiera
de los casos puedes utilizar funciones (si usas SQL 2000) para facilitar


su
uso entonces los INSERT te quedan como:
=> INSERT INTO Partes (NumParte, DescEsp, DescIng, ipGenero)
VALUES (@NumParte
, COALESCE(@DescEsp, dbo.ValorDefault('Partes','DescEsp')
, COALESCE(@DescIng, dbo.ValorDefault('Partes','DescIng')
, )
=> Un problema de esto es que debes tener una funcion para cada tipo de
datos que usas, pero aun asi creo es mejor que los IF's.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Gregorio López Rojo escribio:
> Gracias a todos. Creo que sí utilizaré IFs, por cuestiones de
> rendimiento, aunque aumente mucho el texto del procedimiento
> almacenado. No podría usar DEFAULTs en los parámetros porque estos
> valores variarían para cada cliente de mi aplicación.
>
> Saludos.
>
> "Gregorio López Rojo" wrote in message
> news:
>> Hola a todos. Estoy diseñando un procedimiento almacenado para
>> insertar valores en una tabla y es el siguiente:
>>
>> create procedure spInsertToPartes
>> @NumParte varchar(50) = NULL,
>> @DescEsp varchar(150) = NULL,
>> @DescIng varchar(150) = NULL,
>> @ipGenero int = NULL,
>> @idParte int OUTPUT
>> as
>> insert into partes
>> (NumParte, DescEsp, DescIng, ipGenero)
>> values
>> (@NumParte, @DescEsp, @DescIng, @ipGenero)
>>
>> select @idParte = SCOPE_IDENTITY()
>>
>> Hasta aquí todo bien, pero quiero mejorar este procedimiento para
>> que los campos que no se especifiquen en la ejecución del
>> procedimiento tengan en lugar de NULL
>> el DEFAULT para dichos campos, ¿cómo sería esto?
>>
>> Saludos y gracias anticipadas.


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