SQL Server - Procedimiento no me funciona en INSERT, únicamente en UPDATE

   
Vista:

Procedimiento no me funciona en INSERT, únicamente en UPDATE

Publicado por Marcela Castro (1 intervención) el 30/04/2012 06:24:56
Buenas tengo una duda es que no se que estoy haciendo mal es que es procedimiento no me corre el insert solo el update por favor ayuda no se que esta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
CREATE DATABASE PR
GO
USE PR
GO
CREATE TABLE A
(
CDProducto VARCHAR(50) NOT NULL,
CDProvedor VARCHAR(50) NOT NULL,
Nombre VARCHAR(50)NOT NULL,
Cantidad INT NOT NULL
 CONSTRAINT [PK_Tb_Productos] PRIMARY KEY CLUSTERED
(
CDProducto  ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE P
(
CDProvedor VARCHAR(50) NOT NULL,
Nombre VARCHAR(50) NOT NULL
 CONSTRAINT [PK_Tb_Provedor] PRIMARY KEY CLUSTERED
(
CDProvedor ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE A WITH NOCHECK
ADD CONSTRAINT FK_Articulo_Producto
FOREIGN KEY (CDProvedor)
REFERENCES P(CDProvedor)
ON UPDATE CASCADE
GO
ALTER TABLE A CHECK CONSTRAINT FK_Articulo_Producto
GO
ALTER procedure SP_A
@CDProducto VARCHAR(50),
@CDProvedor VARCHAR(50),
@Nombre VARCHAR(50),
@Cantidad INT
 AS
 SET NoCount ON
 BEGIN TRY
IF EXISTS (SELECT * FROM [dbo].[P] WHERE CDProvedor = @CDProducto)
UPDATE [dbo].[A]set[CDProducto]=@CDProducto,[CDProvedor]=@CDProvedor,[Nombre]=@Nombre,[Cantidad]=(Cantidad + @Cantidad)where CDProducto= @CDProducto
ELSE
INSERT INTO [dbo].[A] (CDProducto,CDProvedor,Nombre,Cantidad) VALUES (@CDProducto,@CDProvedor,@Nombre,@Cantidad)
 END TRY
 BEGIN CATCH
 PRINT 'SE HA PRODUCIDO UN ERROR'
END CATCH
GO
INSERT INTO P (Nombre,CDProvedor) values ('DR','DR')
GO
EXEC dbo.SP_A 'DR','AR5','Fanta',2
// si ejecuto el prcedimiento no me gauarda los datos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Procedimiento no me funciona en INSERT, únicamente en UPDATE

Publicado por Isaias (3180 intervenciones) el 30/04/2012 17:12:24
En esta linea estas comparando PROVEEDOR vs PRODUCTO, es correcto???

IF EXISTS (SELECT * FROM [dbo].[P] WHERE CDProvedor = @CDProducto)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Procedimiento no me funciona en INSERT, únicamente en UPDATE

Publicado por marcela (1 intervención) el 01/05/2012 05:19:04
si es provedor es un ya corrri eso pero igual solo actualiza pero no ingresa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
CREATE DATABASE PR
GO
USE PR
GO
CREATE TABLE A
(
CDProvedor VARCHAR(50) NOT NULL,
CDProducto VARCHAR(50) NOT NULL,
Nombre VARCHAR(50)NOT NULL,
Cantidad INT NOT NULL
 CONSTRAINT [PK_Tb_Productos] PRIMARY KEY CLUSTERED
(
CDProducto  ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE P
(
CDProvedor VARCHAR(50) NOT NULL,
Nombre VARCHAR(50) NOT NULL
 CONSTRAINT [PK_Tb_Provedor] PRIMARY KEY CLUSTERED
(
CDProvedor ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE A WITH NOCHECK
ADD CONSTRAINT FK_Articulo_Producto
FOREIGN KEY (CDProvedor)
REFERENCES P(CDProvedor)
ON UPDATE CASCADE
GO
ALTER TABLE A CHECK CONSTRAINT FK_Articulo_Producto
GO
ALTER procedure SP_A
@CDProvedor VARCHAR(50),
@CDProducto VARCHAR(50),
@Nombre VARCHAR (30),
@Cantidad INT
 AS
 SET NoCount ON
 BEGIN TRY
IF EXISTS (SELECT * FROM [dbo].[A]   WHERE CDProvedor=@CDProvedor)
update [dbo].[A] set [CDProvedor]=@CDProvedor,[CDProducto]=@CDProducto,[Nombre]=@Nombre, [Cantidad] =  Cantidad +(@Cantidad) where CDProducto= @CDProducto
ELSE
INSERT INTO [dbo].[A](CDProvedor,CDProducto,Nombre,Cantidad) VALUES (@CDProvedor,@CDProducto,@Cantidad,@Nombre)
 END TRY
 BEGIN CATCH
 PRINT 'PROVEDOR NO REGISTRADO'
END CATCH
GO
GO
INSERT P (Nombre,CDProvedor) values ('DR','DR')
GO
EXEC dbo.SP_A 'DR','ARr12','Fanta DER',4
GO
SELECT * FROM A
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de ISAIAS ISLAS

Procedimiento no me funciona en INSERT, únicamente en UPDATE

Publicado por ISAIAS ISLAS (3180 intervenciones) el 01/05/2012 20:15:01
Elimina tus GO, estos, terminan y eliminan la siguiente instruccion

Debes crear tus tablas.

Crear tu procedimiento.

Insertar

y

Probrar

En ese orden, ejecuta cada una de tus instrucciones, no todas por completo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar