problema con procedure
Tengo este sp pero no me deja ejecutarlo, si alguien sabe por favor comuniqueme que puede ser.
CREATE OR REPLACE PROCEDURE modif_chain_n_bco (
cam IN VARCHAR2,
cam_out OUT VARCHAR2
)
AS
cam VARCHAR2;
BEGIN
tmpvar := cam;
IF tmpvar <> ''
UPDATE tmpvar SET CHAIN_N ='8' where CHAIN_N = '1';
COMMIT;
UPDATE @tmpvar SET CHAIN_N ='9' where CHAIN_N = '2';
COMMIT;
UPDATE tmpvar SET CHAIN_N ='2' where CHAIN_N = '8';
COMMIT;
UPDATE tmpvar SET CHAIN_N ='1' where CHAIN_N = '9';
COMMIT;
cam_out:= 'o';
ELSE
cam_out:= 'e';
END IF
END modif_chain_n_bco;
/
CREATE OR REPLACE PROCEDURE modif_chain_n_bco (
cam IN VARCHAR2,
cam_out OUT VARCHAR2
)
AS
cam VARCHAR2;
BEGIN
tmpvar := cam;
IF tmpvar <> ''
UPDATE tmpvar SET CHAIN_N ='8' where CHAIN_N = '1';
COMMIT;
UPDATE @tmpvar SET CHAIN_N ='9' where CHAIN_N = '2';
COMMIT;
UPDATE tmpvar SET CHAIN_N ='2' where CHAIN_N = '8';
COMMIT;
UPDATE tmpvar SET CHAIN_N ='1' where CHAIN_N = '9';
COMMIT;
cam_out:= 'o';
ELSE
cam_out:= 'e';
END IF
END modif_chain_n_bco;
/
1-) Tienes una variable de entrada que se llama cam y luego te declaras otra VARCHAR2 ¿ DE CUANTO ? que se llama igual ( cam ). Eso no cuela.
2-) ¿ que es eso de UPDATE @tmpvar ? Eso creo que tampoco cuela.
3-) Si tmpvar es una variable ¿ donde te la declaras ?
4-) Si es una variable, aparte de declarartela, para ese tipo de sentencias debes utilizar sql dinamico
2-) ¿ que es eso de UPDATE @tmpvar ? Eso creo que tampoco cuela.
3-) Si tmpvar es una variable ¿ donde te la declaras ?
4-) Si es una variable, aparte de declarartela, para ese tipo de sentencias debes utilizar sql dinamico
segun lo comentado lo deje asi , pero me arroja el siguiente error: identifier 'TMPVAR' must be declared
CREATE OR REPLACE PROCEDURE bco_chain_n (cam IN VARCHAR2, cam_out OUT VARCHAR2)
AS
BEGIN
DECLARE
--cam VARCHAR2 (20);
tmpvar VARCHAR2 (20);
BEGIN
tmpvar := cam;
IF (tmpvar <> '')
THEN
UPDATE tmpvar
SET chain_n = '8'
WHERE chain_n = '1';
COMMIT;
UPDATE tmpvar
SET chain_n = '9'
WHERE chain_n = '2';
COMMIT;
UPDATE tmpvar
SET chain_n = '2'
WHERE chain_n = '8';
COMMIT;
UPDATE tmpvar
SET chain_n = '1'
WHERE chain_n = '9';
COMMIT;
cam_out := 'o';
ELSE
cam_out := 'e';
END IF;
END;
END bco_chain_n;
CREATE OR REPLACE PROCEDURE bco_chain_n (cam IN VARCHAR2, cam_out OUT VARCHAR2)
AS
BEGIN
DECLARE
--cam VARCHAR2 (20);
tmpvar VARCHAR2 (20);
BEGIN
tmpvar := cam;
IF (tmpvar <> '')
THEN
UPDATE tmpvar
SET chain_n = '8'
WHERE chain_n = '1';
COMMIT;
UPDATE tmpvar
SET chain_n = '9'
WHERE chain_n = '2';
COMMIT;
UPDATE tmpvar
SET chain_n = '2'
WHERE chain_n = '8';
COMMIT;
UPDATE tmpvar
SET chain_n = '1'
WHERE chain_n = '9';
COMMIT;
cam_out := 'o';
ELSE
cam_out := 'e';
END IF;
END;
END bco_chain_n;