Problemas con store procedure

27/09/2003 - 21:42 por Fernando | Informe spam
Hola grupo tengo que actualizar una tabla (Socios) mediante un sp que recibe
como parametros todos los datos. El problema es que uno de los datos tiene
una referencia a otra tabla(Osocial) y quiero guardar en mi tabla el Id del
dato no la descripcion para mantener la integridad referencial. Intente algo
asi pero da error.
Alguna sugerencia...
Saludos
Fernando
CREATE PROCEDURE [UpdateDatos]
(@HC [int],
@Apellido [nvarchar](30),
@TD [nvarchar](3),
@NDoc [int],
@Direccion [nvarchar](35),
@Localidad [nvarchar](25),
@FeNac [datetime],
@FeIng [datetime],
@OSocial [nvarchar](35),
@Tel [nvarchar](12))
AS
DECLARE @IdOSocial int
SELECT [IdOs]
FROM [Consultorio].[dbo].[OSocial]
WHERE Descripcion = @OSocial
SET @IdOSocial = [IdOs]

UPDATE [Consultorio].[dbo].[Socios]

SET
[ApellidoYNombre] = @Apellido,
[TD] = @TD,
[NDOC] =@NDoc,
[DIRECCION] =@Direccion,
[LOCALIDAD] =@Localidad,
[FENAC] =@FeNac,
[FEING] =@FeIng,
[OSOCIAL] =@IdOSocial,
[TEL] =@Tel

WHERE
( [HC] = @HC)
GO

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
28/09/2003 - 00:36 | Informe spam
Prueba a almacenar el valor en una variable, similar a esto:

CREATE PROCEDURE [UpdateDatos]
(@HC [int],
@Apellido [nvarchar](30),
@TD [nvarchar](3),
@NDoc [int],
@Direccion [nvarchar](35),
@Localidad [nvarchar](25),
@FeNac [datetime],
@FeIng [datetime],
@OSocial [nvarchar](35),
@Tel [nvarchar](12))
AS
DECLARE @IdOSocial int

SELECT @IdOSocial = [IdOs]
FROM [Consultorio].[dbo].[OSocial]
WHERE Descripcion = @OSocial

UPDATE [Consultorio].[dbo].[Socios]

SET
[ApellidoYNombre] = @Apellido,
[TD] = @TD,
[NDOC] =@NDoc,
[DIRECCION] =@Direccion,
[LOCALIDAD] =@Localidad,
[FENAC] =@FeNac,
[FEING] =@FeIng,
[OSOCIAL] =@IdOSocial,
[TEL] =@Tel

WHERE
( [HC] = @HC)
GO


Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

***IMPORTANTE*** Microsoft Security Bulletin MS03-039
http://www.microsoft.com/security/s...03-039.asp

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Fernando" wrote in message
news:%
Hola grupo tengo que actualizar una tabla (Socios) mediante un sp que


recibe
como parametros todos los datos. El problema es que uno de los datos tiene
una referencia a otra tabla(Osocial) y quiero guardar en mi tabla el Id


del
dato no la descripcion para mantener la integridad referencial. Intente


algo
asi pero da error.
Alguna sugerencia...
Saludos
Fernando
CREATE PROCEDURE [UpdateDatos]
(@HC [int],
@Apellido [nvarchar](30),
@TD [nvarchar](3),
@NDoc [int],
@Direccion [nvarchar](35),
@Localidad [nvarchar](25),
@FeNac [datetime],
@FeIng [datetime],
@OSocial [nvarchar](35),
@Tel [nvarchar](12))
AS
DECLARE @IdOSocial int
SELECT [IdOs]
FROM [Consultorio].[dbo].[OSocial]
WHERE Descripcion = @OSocial
SET @IdOSocial = [IdOs]

UPDATE [Consultorio].[dbo].[Socios]

SET
[ApellidoYNombre] = @Apellido,
[TD] = @TD,
[NDOC] =@NDoc,
[DIRECCION] =@Direccion,
[LOCALIDAD] =@Localidad,
[FENAC] =@FeNac,
[FEING] =@FeIng,
[OSOCIAL] =@IdOSocial,
[TEL] =@Tel

WHERE
( [HC] = @HC)
GO



Respuesta Responder a este mensaje
#2 Fernando
28/09/2003 - 04:06 | Informe spam
mil gracias funciona perfectamente y es justo lo que necesito.
Saludos :-)
Fernando


"Gustavo Larriera [MVP]" escribió en el mensaje
news:#
Prueba a almacenar el valor en una variable, similar a esto:

CREATE PROCEDURE [UpdateDatos]
(@HC [int],
@Apellido [nvarchar](30),
@TD [nvarchar](3),
@NDoc [int],
@Direccion [nvarchar](35),
@Localidad [nvarchar](25),
@FeNac [datetime],
@FeIng [datetime],
@OSocial [nvarchar](35),
@Tel [nvarchar](12))
AS
DECLARE @IdOSocial int

SELECT @IdOSocial = [IdOs]
FROM [Consultorio].[dbo].[OSocial]
WHERE Descripcion = @OSocial

UPDATE [Consultorio].[dbo].[Socios]

SET
[ApellidoYNombre] = @Apellido,
[TD] = @TD,
[NDOC] =@NDoc,
[DIRECCION] =@Direccion,
[LOCALIDAD] =@Localidad,
[FENAC] =@FeNac,
[FEING] =@FeIng,
[OSOCIAL] =@IdOSocial,
[TEL] =@Tel

WHERE
( [HC] = @HC)
GO


Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

***IMPORTANTE*** Microsoft Security Bulletin MS03-039
http://www.microsoft.com/security/s...03-039.asp

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Fernando" wrote in message
news:%
> Hola grupo tengo que actualizar una tabla (Socios) mediante un sp que
recibe
> como parametros todos los datos. El problema es que uno de los datos


tiene
> una referencia a otra tabla(Osocial) y quiero guardar en mi tabla el Id
del
> dato no la descripcion para mantener la integridad referencial. Intente
algo
> asi pero da error.
> Alguna sugerencia...
> Saludos
> Fernando
> CREATE PROCEDURE [UpdateDatos]
> (@HC [int],
> @Apellido [nvarchar](30),
> @TD [nvarchar](3),
> @NDoc [int],
> @Direccion [nvarchar](35),
> @Localidad [nvarchar](25),
> @FeNac [datetime],
> @FeIng [datetime],
> @OSocial [nvarchar](35),
> @Tel [nvarchar](12))
> AS
> DECLARE @IdOSocial int
> SELECT [IdOs]
> FROM [Consultorio].[dbo].[OSocial]
> WHERE Descripcion = @OSocial
> SET @IdOSocial = [IdOs]
>
> UPDATE [Consultorio].[dbo].[Socios]
>
> SET
> [ApellidoYNombre] = @Apellido,
> [TD] = @TD,
> [NDOC] =@NDoc,
> [DIRECCION] =@Direccion,
> [LOCALIDAD] =@Localidad,
> [FENAC] =@FeNac,
> [FEING] =@FeIng,
> [OSOCIAL] =@IdOSocial,
> [TEL] =@Tel
>
> WHERE
> ( [HC] = @HC)
> GO
>
>
>


Respuesta Responder a este mensaje
#3 Eladio Rincón
28/09/2003 - 12:05 | Informe spam
Hola Fernando,

recuerda que en sentencias de actualización puedes realizar también JOINs;
te pongo este ejemplo sencillo: usando la base de datos Northwind; para todos los pedidos que hayan sido gestionados por el empleado 'Steven Buchanan' y la compañia a la que se haya realizado la venta sea 'Vins et alcools Chevalier' quiero actualizar el código de distribuidos (shipper) a 1; fijate que los nombres no se encuentran en la tabla ordes, por lo que debo obtener los códigos asociados a los nombres desde tablas diferentes a Orders: en este caso Employees y Customers:

update o
set o.shipvia = 1
from orders o
inner join customers c
on o.customerid = c.customerid
inner join employees e
on o.employeeid = e.employeeid
where
c.companyname = 'Vins et alcools Chevalier'
and e.LastName = 'Buchanan'
and e.FirstName = 'Steven'

Saludos,

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net



"Comparte lo que sabes, aprende lo que no sepas." FGG

"Fernando" escribió en el mensaje news:%
Hola grupo tengo que actualizar una tabla (Socios) mediante un sp que recibe
como parametros todos los datos. El problema es que uno de los datos tiene
una referencia a otra tabla(Osocial) y quiero guardar en mi tabla el Id del
dato no la descripcion para mantener la integridad referencial. Intente algo
asi pero da error.
Alguna sugerencia...
Saludos
Fernando
CREATE PROCEDURE [UpdateDatos]
(@HC [int],
@Apellido [nvarchar](30),
@TD [nvarchar](3),
@NDoc [int],
@Direccion [nvarchar](35),
@Localidad [nvarchar](25),
@FeNac [datetime],
@FeIng [datetime],
@OSocial [nvarchar](35),
@Tel [nvarchar](12))
AS
DECLARE @IdOSocial int
SELECT [IdOs]
FROM [Consultorio].[dbo].[OSocial]
WHERE Descripcion = @OSocial
SET @IdOSocial = [IdOs]

UPDATE [Consultorio].[dbo].[Socios]

SET
[ApellidoYNombre] = @Apellido,
[TD] = @TD,
[NDOC] =@NDoc,
[DIRECCION] =@Direccion,
[LOCALIDAD] =@Localidad,
[FENAC] =@FeNac,
[FEING] =@FeIng,
[OSOCIAL] =@IdOSocial,
[TEL] =@Tel

WHERE
( [HC] = @HC)
GO



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