Conversão de procedure para oracle

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
gracianow
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qua, 08 Out 2008 3:57 pm
Localização: São Paulo -SP
Wagner Graciano
Developer | Designer
Sistemas Web | Criação e Reformulação de Websites
INTRANET | EXTRANET
Skype: gracianow
messenger: gracianow@msn.com

Estou convertendo uma procedure grande de um formulário que inser em 3 tabelas ao mesmo tempo (não tem jeito tem de sser assim), consigo criá-la mas sempre com alertas do Oracle. alguém pode me ajudar, principalmente na parte em que aparece o sinal := onde um campo recebe o valor de um parametro?

Obrigado.

Olha o code ai:
**********************

Selecionar tudo

create or replace PROCEDURE PRC_SAC_INSEREENTREVISTA 
(P_IDADE IN NUMBER, P_SEXO IN CHAR, P_ID_ESCOLAPAC IN NUMBER, P_ID_FORM IN NUMBER, 
P_PERIODO_REFERENCIA IN VARCHAR, P_ID_ESPECPAC IN NUMBER, P_ID_INTENFER IN NUMBER, 
P_ID_SUBPERG_01 IN NUMBER, P_ID_NOTATEND_01 IN NUMBER, P_ID_RESPTEXTO_01 IN VARCHAR, 
P_ID_SUBPERG_02 IN NUMBER, P_ID_NOTATEND_02 IN NUMBER, P_ID_RESPTEXTO_02 IN VARCHAR, 
P_ID_SUBPERG_03 IN NUMBER, P_ID_NOTATEND_03 IN NUMBER, P_ID_RESPTEXTO_03 IN VARCHAR, 
P_ID_SUBPERG_04 IN NUMBER, P_ID_NOTATEND_04 IN NUMBER, P_ID_RESPTEXTO_04 IN VARCHAR, 

IS

  P_ID_PACIENTE NUMBER;
  P_ID_ENTRV NUMBER;
  P_DT_ENTRV DATE;
  
BEGIN
  
INSERT INTO TB_PACIENTE (IDADE, ID_SEXO_PACIENTE, ID_ESCOLARIDADE_PACIENTE, ID_ESPECIALIDADE_PACIENTE, ID_INT_ENFERMARIA)
	VALUES (P_IDADE, P_SEXO, P_ID_ESCOLAPAC, P_ID_ESPECPAC, P_ID_INTENFER)
/* SET P_ID_PACIENTE=P_P_IDENTITY */
P_ID_PACIENTE := SEQ_ID_PACIENTE.NEXTVAL

/* SET P_DT_ENTRV = ISNULL(P_PERIODO_REFERENCIA,CONVERT( VARCHAR(16),GETDATE(),20)) */
P_DT_ENTRV := NVL(P_PERIODO_REFERENCIA, TO_CHAR(P_PERIODO_REFERENCIA, SYSDATE)

	INSERT INTO TB_ENTRV (DT_ENTRV, ID_FORM, ID_PACIENTE)
	VALUES (P_DT_ENTRV, P_ID_FORM, P_ID_PACIENTE)

/* SET P_ID_ENTRV=P_P_IDENTITY */
P_ID_ENTRV := SEQ_ID_ENTRV.NEXTVAL
COMMIT;

BEGIN TRAN
/* SET XACT_ABORT ON */
	INSERT INTO TB_PACIENTE (IDADE, ID_SEXO_PACIENTE, ID_ESCOLARIDADE_PACIENTE, ID_ESPECIALIDADE_PACIENTE, ID_INT_ENFERMARIA)
	VALUES (P_IDADE, P_SEXO, P_ID_ESCOLAPAC, P_ID_ESPECPAC, P_ID_INTENFER)
/* SET P_ID_PACIENTE=P_P_IDENTITY */
 P_ID_PACIENTE := SEQ_ID_PACIENTE.NEXTVAL

/* SET P_DT_ENTRV = ISNULL(P_PERIODO_REFERENCIA,CONVERT( VARCHAR(16),GETDATE(),20)) */
 P_DT_ENTRV := NVL(P_PERIODO_REFERENCIA, TO_CHAR((P_PERIODO_REFERENCIA, SYSDATE)

	INSERT INTO TB_ENTRV (DT_ENTRV, ID_FORM, ID_PACIENTE)
	VALUES (P_DT_ENTRV, P_ID_FORM, P_ID_PACIENTE)

/* SET P_ID_ENTRV=P_P_IDENTITY */
 P_ID_ENTRV := SEQ_ID_ENTRV.NEXTVAL

	
IF P_ID_SUBPERG_01 IS NOT NULL ELSE EXEC PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_01, ID_RESPTEXTO_01, P_ID_NOTATEND_01)
IF P_ID_SUBPERG_02 IS NOT NULL ELSE EXEC PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_02, P_ID_RESPTEXTO_02, P_ID_NOTATEND_02)
IF P_ID_SUBPERG_03 IS NOT NULL ELSE EXEC PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_03, P_ID_RESPTEXTO_03, P_ID_NOTATEND_03)
IF P_ID_SUBPERG_04 IS NOT NULL ELSE EXEC PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_04, P_ID_RESPTEXTO_04, P_ID_NOTATEND_04)

COMMIT TRAN

EXCEPTION

END PRC_SAC_INSEREENTREVISTA
COMMIT;
************************************************
rerodrig
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 06 Fev 2008 10:33 am
Localização: Americana - SP

Cara, para você atribuir a sequence a uma variável, você precisa fazer isso com um select into, a não ser que você esteja usando o Oracle 11g que é possível atribuir do jeito que você fez...qualquer coisa posta aí...falow!
gracianow
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qua, 08 Out 2008 3:57 pm
Localização: São Paulo -SP
Wagner Graciano
Developer | Designer
Sistemas Web | Criação e Reformulação de Websites
INTRANET | EXTRANET
Skype: gracianow
messenger: gracianow@msn.com

Obrigado por sua valiosa dica, resolveu meu problema em relação a atribuição do valor da sequence para a variavel.
Mas, agora veio outro(s) problema(s):

Selecionar tudo

Error(63,2): PL/SQL: SQL Statement ignored

Error(76,2): PLS-00103: Encontrado o símbolo "INSERT" quando um dos seguintes símbolos era esperado:     := . ( @ % ; O símbolo ";" foi substituído por "INSERT" para continuar. 
Se puder dar mais uma olhada sou muito grato:

Selecionar tudo

create or replace
PROCEDURE PRC_SAC_INSEREENTREVISTA 
(P_IDADE IN NUMBER, P_SEXO IN CHAR, P_ID_ESCOLAPAC IN NUMBER, P_ID_FORM IN NUMBER, 
P_PERIODO_REFERENCIA IN VARCHAR, P_ID_ESPECPAC IN NUMBER, P_ID_INTENFER IN NUMBER, 
P_ID_SUBPERG_01 IN NUMBER, P_ID_NOTATEND_01 IN NUMBER, P_ID_RESPTEXTO_01 IN VARCHAR, 
P_ID_SUBPERG_02 IN NUMBER, P_ID_NOTATEND_02 IN NUMBER, P_ID_RESPTEXTO_02 IN VARCHAR, 
P_ID_SUBPERG_03 IN NUMBER, P_ID_NOTATEND_03 IN NUMBER, P_ID_RESPTEXTO_03 IN VARCHAR, 
P_ID_SUBPERG_04 IN NUMBER, P_ID_NOTATEND_04 IN NUMBER, P_ID_RESPTEXTO_04 IN VARCHAR)

IS

  P_ID_PACIENTE NUMBER(10);
  P_ID_ENTRV NUMBER(10);
  /*P_DT_ENTRV DATE;*/
  
BEGIN

  INSERT INTO TB_PACIENTE (IDADE, ID_SEXO_PACIENTE, ID_ESCOLARIDADE_PACIENTE, ID_ESPECIALIDADE_PACIENTE, ID_INT_ENFERMARIA)
	VALUES (P_ID_PACIENTE, P_IDADE, P_SEXO, P_ID_ESCOLAPAC, P_ID_ESPECPAC, P_ID_INTENFER)
/* SET P_ID_PACIENTE=P_P_IDENTITY */
/*P_ID_PACIENTE := SEQ_ID_PACIENTE.NEXTVAL*/
  SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;

/* SET P_DT_ENTRV = ISNULL(P_PERIODO_REFERENCIA,CONVERT( VARCHAR(16),GETDATE(),20)) */
/*P_DT_ENTRV := NVL(P_PERIODO_REFERENCIA, TO_CHAR(P_PERIODO_REFERENCIA), SYSDATE)*/

	INSERT INTO TB_ENTRV (DT_ENTRV, ID_FORM, ID_PACIENTE)
	VALUES (SYSDATE, P_ID_FORM, P_ID_PACIENTE)

/* SET P_ID_ENTRV=P_P_IDENTITY */
/*P_ID_ENTRV := SEQ_ID_ENTRV.NEXTVAL*/

  SELECT SEQ_ID_ENTRV.NEXTVAL INTO P_ID_ENTRV FROM DUAL;


COMMIT;

BEGIN TRAN
/* SET XACT_ABORT ON */
	INSERT INTO TB_PACIENTE (IDADE, ID_SEXO_PACIENTE, ID_ESCOLARIDADE_PACIENTE, ID_ESPECIALIDADE_PACIENTE, ID_INT_ENFERMARIA)
	VALUES (P_IDADE, P_SEXO, P_ID_ESCOLAPAC, P_ID_ESPECPAC, P_ID_INTENFER)
/* SET P_ID_PACIENTE=P_P_IDENTITY */
 /* P_ID_PACIENTE := SEQ_ID_PACIENTE.NEXTVAL */
 
 SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;

/* SET P_DT_ENTRV = ISNULL(P_PERIODO_REFERENCIA,CONVERT( VARCHAR(16),GETDATE(),20)) */
 /*P_DT_ENTRV := NVL(P_PERIODO_REFERENCIA, TO_CHAR((P_PERIODO_REFERENCIA, SYSDATE)*/

	INSERT INTO TB_ENTRV (DT_ENTRV, ID_FORM, ID_PACIENTE)
	VALUES (SYSDATE, P_ID_FORM, P_ID_PACIENTE)

/* SET P_ID_ENTRV=P_P_IDENTITY */
 /*P_ID_ENTRV := SEQ_ID_ENTRV.NEXTVAL*/
 
  SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;

	
IF P_ID_SUBPERG_01 IS NOT NULL THEN EXEC PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_01, ID_RESPTEXTO_01, P_ID_NOTATEND_01)
IF P_ID_SUBPERG_02 IS NOT NULL THEN EXEC PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_02, P_ID_RESPTEXTO_02, P_ID_NOTATEND_02)
IF P_ID_SUBPERG_03 IS NOT NULL THEN EXEC PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_03, P_ID_RESPTEXTO_03, P_ID_NOTATEND_03)
IF P_ID_SUBPERG_04 IS NOT NULL THEN EXEC PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_04, P_ID_RESPTEXTO_04, P_ID_NOTATEND_04)

COMMIT TRAN;

COMMIT;

END PRC_SAC_INSEREENTREVISTA;
rerodrig
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 06 Fev 2008 10:33 am
Localização: Americana - SP

tem uns inserts sem ';' no final e aquele bloco tran está declarado errado...falow
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

Amigo, todos os comandos INSERT faltam o ";" no final...

Verifique também aquela sequência de IF's antes do commit.
Eles precisam ser fechados!

Você também tem uma clausula EXCEPTION perdida no final...
Coloque pelo menos um WHEN OTHERS...


Abraço
gracianow
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qua, 08 Out 2008 3:57 pm
Localização: São Paulo -SP
Wagner Graciano
Developer | Designer
Sistemas Web | Criação e Reformulação de Websites
INTRANET | EXTRANET
Skype: gracianow
messenger: gracianow@msn.com

Valeu rerodrigo e joaogarcia já progredi muito com a ajuda de vocês.

Carahs ta ficando lindo!
Mas sempre surge um erro para atrapalhar e aggora e na regiao do begin transaction ele insiste neste erro:

Selecionar tudo

Error(80,12): PLS-00103: Encontrado o símbolo "VARCHAR" quando um dos seguintes símbolos era esperado:     . ( ) , * @ % & | = - + < / > at in is mod not range rem =>    .. <an exponent (**)> <> or != or ~= >= <= <> and or like as    between from using || O símbolo "." foi substituído por "VARCHAR" para continuar. 
Olha o code:

Selecionar tudo

create or replace
PROCEDURE PRC_SAC_INSEREENTREVISTA 
(P_IDADE IN NUMBER, P_SEXO IN CHAR, P_ID_ESCOLAPAC IN NUMBER, P_ID_FORM IN NUMBER, 
P_PERIODO_REFERENCIA IN VARCHAR, P_ID_ESPECPAC IN NUMBER, P_ID_INTENFER IN NUMBER, 
P_ID_SUBPERG_01 IN NUMBER, P_ID_NOTATEND_01 IN NUMBER, P_ID_RESPTEXTO_01 IN VARCHAR, 
P_ID_SUBPERG_02 IN NUMBER, P_ID_NOTATEND_02 IN NUMBER, P_ID_RESPTEXTO_02 IN VARCHAR, 
P_ID_SUBPERG_03 IN NUMBER, P_ID_NOTATEND_03 IN NUMBER, P_ID_RESPTEXTO_03 IN VARCHAR, 
P_ID_SUBPERG_04 IN NUMBER, P_ID_NOTATEND_04 IN NUMBER, P_ID_RESPTEXTO_04 IN VARCHAR)

IS

PRAGMA AUTONOMOUS_TRANSACTION;

  P_ID_PACIENTE NUMBER(10);
  P_ID_ENTRV NUMBER(10);
   /*P_DT_ENTRV DATE;*/
  
BEGIN

  INSERT INTO TB_PACIENTE (IDADE, ID_SEXO_PACIENTE, ID_ESCOLARIDADE_PACIENTE, ID_ESPECIALIDADE_PACIENTE, ID_INT_ENFERMARIA)
	VALUES (P_ID_PACIENTE, P_IDADE, P_SEXO, P_ID_ESCOLAPAC, P_ID_ESPECPAC, P_ID_INTENFER);
/* SET P_ID_PACIENTE=P_P_IDENTITY */
/*P_ID_PACIENTE := SEQ_ID_PACIENTE.NEXTVAL*/
  SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;

/* SET P_DT_ENTRV = ISNULL(P_PERIODO_REFERENCIA,CONVERT( VARCHAR(16),GETDATE(),20)) */
/*P_DT_ENTRV := NVL(P_PERIODO_REFERENCIA, TO_CHAR(P_PERIODO_REFERENCIA), SYSDATE)*/

	INSERT INTO TB_ENTRV (DT_ENTRV, ID_FORM, ID_PACIENTE)
	VALUES (SYSDATE, P_ID_FORM, P_ID_PACIENTE);

/* SET P_ID_ENTRV=P_P_IDENTITY */
/*P_ID_ENTRV := SEQ_ID_ENTRV.NEXTVAL*/

  SELECT SEQ_ID_ENTRV.NEXTVAL INTO P_ID_ENTRV FROM DUAL;


COMMIT;

BEGIN TRANSACTION   

	(
  
     V_SQL VARCHAR(999);
  
/* SET XACT_ABORT ON */
	V_SQL := INSERT INTO TB_PACIENTE (IDADE, ID_SEXO_PACIENTE, ID_ESCOLARIDADE_PACIENTE, ID_ESPECIALIDADE_PACIENTE, ID_INT_ENFERMARIA)
	VALUES (P_IDADE, P_SEXO, P_ID_ESCOLAPAC, P_ID_ESPECPAC, P_ID_INTENFER);
/* SET P_ID_PACIENTE=P_P_IDENTITY */
 /* P_ID_PACIENTE := SEQ_ID_PACIENTE.NEXTVAL */
 
 V_SQL := SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;

/* SET P_DT_ENTRV = ISNULL(P_PERIODO_REFERENCIA,CONVERT( VARCHAR(16),GETDATE(),20)) */
 /*P_DT_ENTRV := NVL(P_PERIODO_REFERENCIA, TO_CHAR((P_PERIODO_REFERENCIA, SYSDATE)*/

	V_SQL := INSERT INTO TB_ENTRV (DT_ENTRV, ID_FORM, ID_PACIENTE)
	VALUES (SYSDATE, P_ID_FORM, P_ID_PACIENTE);

/* SET P_ID_ENTRV=P_P_IDENTITY */
 /*P_ID_ENTRV := SEQ_ID_ENTRV.NEXTVAL*/
 
  V_SQL := SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;

     -- IF v_versao IS NULL THEN EXECUTE v_nome; END IF;
	
IF (P_ID_SUBPERG_01 IS NOT NULL) THEN EXECUTE.PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_01, ID_RESPTEXTO_01, P_ID_NOTATEND_01); END IF;
IF (P_ID_SUBPERG_02 IS NOT NULL) THEN EXECUTE.PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_02, P_ID_RESPTEXTO_02, P_ID_NOTATEND_02); END IF;
IF (P_ID_SUBPERG_03 IS NOT NULL) THEN EXECUTE.PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_03, P_ID_RESPTEXTO_03, P_ID_NOTATEND_03); END IF;
IF (P_ID_SUBPERG_04 IS NOT NULL) THEN EXECUTE.PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_04, P_ID_RESPTEXTO_04, P_ID_NOTATEND_04); END IF;

	EXCEPTION
		WHEN OTHERS
			DBMS_OUTPUT.PUT_LINE (‘Operação não realizada’);
			COMMIT;
      
	END; )
END PRC_SAC_INSEREENTREVISTA;
gracianow
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qua, 08 Out 2008 3:57 pm
Localização: São Paulo -SP
Wagner Graciano
Developer | Designer
Sistemas Web | Criação e Reformulação de Websites
INTRANET | EXTRANET
Skype: gracianow
messenger: gracianow@msn.com

Caras, fantástico!!! Muito obrigado redrigo e joaogarcia, valeu mesmo!
Sua ajuda foi muito valiosa, soberba, relevante, colossal e etc...

Tai o resultado!

O Code completo:

Selecionar tudo

create or replace
PROCEDURE PRC_SAC_INSEREENTREVISTA 
(P_IDADE IN NUMBER, P_SEXO IN CHAR, P_ID_ESCOLAPAC IN NUMBER, P_ID_FORM IN NUMBER, 
P_PERIODO_REFERENCIA IN VARCHAR, P_RESP_COMPLEMENTAR_01 IN NUMBER, P_ID_ESPECPAC IN NUMBER, P_ID_INTENFER IN NUMBER, 
P_ID_SUBPERG_01 IN NUMBER, P_ID_NOTATEND_01 IN NUMBER, P_ID_RESPTEXTO_01 IN VARCHAR, P_RESP_COMPLEMENTAR_01 IN NUMBER, 
P_ID_SUBPERG_02 IN NUMBER, P_ID_NOTATEND_02 IN NUMBER, P_ID_RESPTEXTO_02 IN VARCHAR, P_RESP_COMPLEMENTAR_02 IN NUMBER, 
P_ID_SUBPERG_03 IN NUMBER, P_ID_NOTATEND_03 IN NUMBER, P_ID_RESPTEXTO_03 IN VARCHAR, P_RESP_COMPLEMENTAR_03 IN NUMBER, 
P_ID_SUBPERG_04 IN NUMBER, P_ID_NOTATEND_04 IN NUMBER, P_ID_RESPTEXTO_04 IN VARCHAR, P_RESP_COMPLEMENTAR_04 IN NUMBER, 
P_ID_SUBPERG_05 IN NUMBER, P_ID_NOTATEND_05 IN NUMBER, P_ID_RESPTEXTO_05 IN VARCHAR, P_RESP_COMPLEMENTAR_05 IN NUMBER, 
P_ID_SUBPERG_06 IN NUMBER, P_ID_NOTATEND_06 IN NUMBER, P_ID_RESPTEXTO_06 IN VARCHAR, P_RESP_COMPLEMENTAR_06 IN NUMBER, 
P_ID_SUBPERG_07 IN NUMBER, P_ID_NOTATEND_07 IN NUMBER, P_ID_RESPTEXTO_07 IN VARCHAR, P_RESP_COMPLEMENTAR_07 IN NUMBER,  
P_ID_SUBPERG_08 IN NUMBER, P_ID_NOTATEND_08 IN NUMBER, P_ID_RESPTEXTO_08 IN VARCHAR, P_RESP_COMPLEMENTAR_08 IN NUMBER, 
P_ID_SUBPERG_09 IN NUMBER, P_ID_NOTATEND_09 IN NUMBER, P_ID_RESPTEXTO_09 IN VARCHAR, P_RESP_COMPLEMENTAR_09 IN NUMBER, 
P_ID_SUBPERG_10 IN NUMBER, P_ID_NOTATEND_10 IN NUMBER, P_ID_RESPTEXTO_10 IN VARCHAR, P_RESP_COMPLEMENTAR_10 IN NUMBER, 
P_ID_SUBPERG_11 IN NUMBER, P_ID_NOTATEND_11 IN NUMBER, P_ID_RESPTEXTO_11 IN VARCHAR, P_RESP_COMPLEMENTAR_11 IN NUMBER, 
P_ID_SUBPERG_12 IN NUMBER, P_ID_NOTATEND_12 IN NUMBER, P_ID_RESPTEXTO_12 IN VARCHAR, P_RESP_COMPLEMENTAR_12 IN NUMBER, 
P_ID_SUBPERG_13 IN NUMBER, P_ID_NOTATEND_13 IN NUMBER, P_ID_RESPTEXTO_13 IN VARCHAR, P_RESP_COMPLEMENTAR_13 IN NUMBER,  
P_ID_SUBPERG_14 IN NUMBER, P_ID_NOTATEND_14 IN NUMBER, P_ID_RESPTEXTO_14 IN VARCHAR, P_RESP_COMPLEMENTAR_14 IN NUMBER, 
P_ID_SUBPERG_15 IN NUMBER, P_ID_NOTATEND_15 IN NUMBER, P_ID_RESPTEXTO_15 IN VARCHAR, P_RESP_COMPLEMENTAR_15 IN NUMBER,
P_ID_SUBPERG_16 IN NUMBER, P_ID_NOTATEND_16 IN NUMBER, P_ID_RESPTEXTO_16 IN VARCHAR, P_RESP_COMPLEMENTAR_16 IN NUMBER,
P_ID_SUBPERG_17 IN NUMBER, P_ID_NOTATEND_17 IN NUMBER, P_ID_RESPTEXTO_17 IN VARCHAR, P_RESP_COMPLEMENTAR_17 IN NUMBER,
P_ID_SUBPERG_18 IN NUMBER, P_ID_NOTATEND_18 IN NUMBER, P_ID_RESPTEXTO_18 IN VARCHAR, P_RESP_COMPLEMENTAR_18 IN NUMBER,
P_ID_SUBPERG_19 IN NUMBER, P_ID_NOTATEND_19 IN NUMBER, P_ID_RESPTEXTO_19 IN VARCHAR, P_RESP_COMPLEMENTAR_19 IN NUMBER,
P_ID_SUBPERG_20 IN NUMBER, P_ID_NOTATEND_20 IN NUMBER, P_ID_RESPTEXTO_20 IN VARCHAR, P_RESP_COMPLEMENTAR_20 IN NUMBER,
P_ID_SUBPERG_21 IN NUMBER, P_ID_NOTATEND_21 IN NUMBER, P_ID_RESPTEXTO_21 IN VARCHAR, P_RESP_COMPLEMENTAR_21 IN NUMBER,
P_ID_SUBPERG_22 IN NUMBER, P_ID_NOTATEND_22 IN NUMBER, P_ID_RESPTEXTO_22 IN VARCHAR, P_RESP_COMPLEMENTAR_22 IN NUMBER,
P_ID_SUBPERG_23 IN NUMBER, P_ID_NOTATEND_23 IN NUMBER, P_ID_RESPTEXTO_23 IN VARCHAR, P_RESP_COMPLEMENTAR_23 IN NUMBER,
P_ID_SUBPERG_24 IN NUMBER, P_ID_NOTATEND_24 IN NUMBER, P_ID_RESPTEXTO_24 IN VARCHAR, P_RESP_COMPLEMENTAR_24 IN NUMBER,
P_ID_SUBPERG_25 IN NUMBER, P_ID_NOTATEND_25 IN NUMBER, P_ID_RESPTEXTO_25 IN VARCHAR, P_RESP_COMPLEMENTAR_25 IN NUMBER,
P_ID_SUBPERG_26 IN NUMBER, P_ID_NOTATEND_26 IN NUMBER, P_ID_RESPTEXTO_26 IN VARCHAR, P_RESP_COMPLEMENTAR_26 IN NUMBER,
P_ID_SUBPERG_27 IN NUMBER, P_ID_NOTATEND_27 IN NUMBER, P_ID_RESPTEXTO_27 IN VARCHAR, P_RESP_COMPLEMENTAR_27 IN NUMBER,
P_ID_SUBPERG_28 IN NUMBER, P_ID_NOTATEND_28 IN NUMBER, P_ID_RESPTEXTO_28 IN VARCHAR, P_RESP_COMPLEMENTAR_28 IN NUMBER,
P_ID_SUBPERG_29 IN NUMBER, P_ID_NOTATEND_29 IN NUMBER, P_ID_RESPTEXTO_29 IN VARCHAR, P_RESP_COMPLEMENTAR_29 IN NUMBER,
P_ID_SUBPERG_30 IN NUMBER, P_ID_NOTATEND_30 IN NUMBER, P_ID_RESPTEXTO_30 IN VARCHAR, P_RESP_COMPLEMENTAR_30 IN NUMBER,
P_ID_SUBPERG_31 IN NUMBER, P_ID_NOTATEND_31 IN NUMBER, P_ID_RESPTEXTO_31 IN VARCHAR, P_RESP_COMPLEMENTAR_31 IN NUMBER,
P_ID_SUBPERG_32 IN NUMBER, P_ID_NOTATEND_32 IN NUMBER, P_ID_RESPTEXTO_32 IN VARCHAR, P_RESP_COMPLEMENTAR_32 IN NUMBER,
P_ID_SUBPERG_33 IN NUMBER, P_ID_NOTATEND_33 IN NUMBER, P_ID_RESPTEXTO_33 IN VARCHAR, P_RESP_COMPLEMENTAR_33 IN NUMBER,
P_ID_SUBPERG_34 IN NUMBER, P_ID_NOTATEND_34 IN NUMBER, P_ID_RESPTEXTO_34 IN VARCHAR, P_RESP_COMPLEMENTAR_34 IN NUMBER,
P_ID_SUBPERG_35 IN NUMBER, P_ID_NOTATEND_35 IN NUMBER, P_ID_RESPTEXTO_35 IN VARCHAR, P_RESP_COMPLEMENTAR_35 IN NUMBER,
P_ID_SUBPERG_36 IN NUMBER, P_ID_NOTATEND_36 IN NUMBER, P_ID_RESPTEXTO_36 IN VARCHAR, P_RESP_COMPLEMENTAR_36 IN NUMBER,
P_ID_SUBPERG_37 IN NUMBER, P_ID_NOTATEND_37 IN NUMBER, P_ID_RESPTEXTO_37 IN VARCHAR, P_RESP_COMPLEMENTAR_37 IN NUMBER,
P_ID_SUBPERG_38 IN NUMBER, P_ID_NOTATEND_38 IN NUMBER, P_ID_RESPTEXTO_38 IN VARCHAR, P_RESP_COMPLEMENTAR_38 IN NUMBER,
P_ID_SUBPERG_39 IN NUMBER, P_ID_NOTATEND_39 IN NUMBER, P_ID_RESPTEXTO_39 IN VARCHAR, P_RESP_COMPLEMENTAR_39 IN NUMBER,
P_ID_SUBPERG_40 IN NUMBER, P_ID_NOTATEND_40 IN NUMBER, P_ID_RESPTEXTO_40 IN VARCHAR, P_RESP_COMPLEMENTAR_40 IN NUMBER)

IS

PRAGMA AUTONOMOUS_TRANSACTION;

  P_ID_PACIENTE NUMBER(10);
  P_ID_ENTRV NUMBER(10);
  V_SQL VARCHAR2(500);
  V_SQL2 VARCHAR2(500);
  V_SQL3 VARCHAR2(500);
  V_SQL4 VARCHAR2(500);
  /*P_DT_ENTRV DATE;*/
  
BEGIN

  INSERT INTO TB_PACIENTE (IDADE, ID_SEXO_PACIENTE, ID_ESCOLARIDADE_PACIENTE, ID_ESPECIALIDADE_PACIENTE, ID_INT_ENFERMARIA)
	VALUES (P_IDADE, P_SEXO, P_ID_ESCOLAPAC, P_ID_ESPECPAC, P_ID_INTENFER);
    
/* SET P_ID_PACIENTE=P_P_IDENTITY */
/*P_ID_PACIENTE := SEQ_ID_PACIENTE.NEXTVAL*/

 SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;

/* SET P_DT_ENTRV = ISNULL(P_PERIODO_REFERENCIA,CONVERT( VARCHAR(16),GETDATE(),20)) */
/*P_DT_ENTRV := NVL(P_PERIODO_REFERENCIA, TO_CHAR(P_PERIODO_REFERENCIA), SYSDATE)*/

	INSERT INTO TB_ENTRV (DT_ENTRV, ID_FORM, ID_PACIENTE)
	VALUES (SYSDATE, P_ID_FORM, P_ID_PACIENTE);
  
/* SET P_ID_ENTRV=P_P_IDENTITY */
/*P_ID_ENTRV := SEQ_ID_ENTRV.NEXTVAL*/

  SELECT SEQ_ID_ENTRV.NEXTVAL INTO P_ID_ENTRV FROM DUAL;
  
  
COMMIT;

BEGIN
        
/* SET XACT_ABORT ON */
   V_SQL := 'INSERT INTO TB_PACIENTE (IDADE, ID_SEXO_PACIENTE, ID_ESCOLARIDADE_PACIENTE, ID_ESPECIALIDADE_PACIENTE, ID_INT_ENFERMARIA)
	VALUES (P_IDADE, P_SEXO, P_ID_ESCOLAPAC, P_ID_ESPECPAC, P_ID_INTENFER);';
  
   EXECUTE IMMEDIATE V_SQL;
/* SET P_ID_PACIENTE=P_P_IDENTITY */
 /* P_ID_PACIENTE := SEQ_ID_PACIENTE.NEXTVAL */
 
  V_SQL2 := 'SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;';
  
   EXECUTE IMMEDIATE V_SQL2;

/* SET P_DT_ENTRV = ISNULL(P_PERIODO_REFERENCIA,CONVERT( VARCHAR(16),GETDATE(),20)) */
 /*P_DT_ENTRV := NVL(P_PERIODO_REFERENCIA, TO_CHAR((P_PERIODO_REFERENCIA, SYSDATE)*/

  V_SQL3 := 'INSERT INTO TB_ENTRV (DT_ENTRV, ID_FORM, ID_PACIENTE)
	VALUES (SYSDATE, P_ID_FORM, P_ID_PACIENTE);';
  
   EXECUTE IMMEDIATE V_SQL3;

/* SET P_ID_ENTRV=P_P_IDENTITY */
 /*P_ID_ENTRV := SEQ_ID_ENTRV.NEXTVAL*/
 
  V_SQL4 := 'SELECT SEQ_ID_PACIENTE.NEXTVAL INTO P_ID_PACIENTE FROM DUAL;';
  
  EXECUTE IMMEDIATE V_SQL4;

     -- IF v_versao IS NULL THEN EXECUTE v_nome; END IF;
	
IF (P_ID_SUBPERG_01 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_01, P_ID_RESPTEXTO_01, P_ID_NOTATEND_01, P_RESP_COMPLEMENTAR_01); END IF;
IF (P_ID_SUBPERG_02 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_02, P_ID_RESPTEXTO_02, P_ID_NOTATEND_02, P_RESP_COMPLEMENTAR_02); END IF;
IF (P_ID_SUBPERG_03 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_03, P_ID_RESPTEXTO_03, P_ID_NOTATEND_03, P_RESP_COMPLEMENTAR_03); END IF;
IF (P_ID_SUBPERG_04 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_04, P_ID_RESPTEXTO_04, P_ID_NOTATEND_04, P_RESP_COMPLEMENTAR_04); END IF;
IF (P_ID_SUBPERG_05 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_05, P_ID_RESPTEXTO_05, P_ID_NOTATEND_05, P_RESP_COMPLEMENTAR_05); END IF;
IF (P_ID_SUBPERG_06 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_06, P_ID_RESPTEXTO_06, P_ID_NOTATEND_06, P_RESP_COMPLEMENTAR_06); END IF;
IF (P_ID_SUBPERG_07 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_07, P_ID_RESPTEXTO_07, P_ID_NOTATEND_07, P_RESP_COMPLEMENTAR_07); END IF;
IF (P_ID_SUBPERG_08 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_08, P_ID_RESPTEXTO_08, P_ID_NOTATEND_08, P_RESP_COMPLEMENTAR_08); END IF;
IF (P_ID_SUBPERG_09 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_09, P_ID_RESPTEXTO_09, P_ID_NOTATEND_09, P_RESP_COMPLEMENTAR_09); END IF;
IF (P_ID_SUBPERG_10 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_10, P_ID_RESPTEXTO_10, P_ID_NOTATEND_10, P_RESP_COMPLEMENTAR_10); END IF;
IF (P_ID_SUBPERG_11 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_11, P_ID_RESPTEXTO_11, P_ID_NOTATEND_11, P_RESP_COMPLEMENTAR_11); END IF;
IF (P_ID_SUBPERG_12 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_12, P_ID_RESPTEXTO_12, P_ID_NOTATEND_12, P_RESP_COMPLEMENTAR_12); END IF;
IF (P_ID_SUBPERG_13 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_13, P_ID_RESPTEXTO_13, P_ID_NOTATEND_13, P_RESP_COMPLEMENTAR_13); END IF;
IF (P_ID_SUBPERG_14 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_14, P_ID_RESPTEXTO_14, P_ID_NOTATEND_14, P_RESP_COMPLEMENTAR_14); END IF;
IF (P_ID_SUBPERG_15 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_15, P_ID_RESPTEXTO_15, P_ID_NOTATEND_15, P_RESP_COMPLEMENTAR_15); END IF;
IF (P_ID_SUBPERG_16 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_16, P_ID_RESPTEXTO_16, P_ID_NOTATEND_16, P_RESP_COMPLEMENTAR_16); END IF;
IF (P_ID_SUBPERG_17 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_17, P_ID_RESPTEXTO_17, P_ID_NOTATEND_17, P_RESP_COMPLEMENTAR_17); END IF;
IF (P_ID_SUBPERG_18 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_18, P_ID_RESPTEXTO_18, P_ID_NOTATEND_18, P_RESP_COMPLEMENTAR_18); END IF;
IF (P_ID_SUBPERG_19 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_19, P_ID_RESPTEXTO_19, P_ID_NOTATEND_19, P_RESP_COMPLEMENTAR_19); END IF;
IF (P_ID_SUBPERG_20 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_20, P_ID_RESPTEXTO_20, P_ID_NOTATEND_20, P_RESP_COMPLEMENTAR_20); END IF;
IF (P_ID_SUBPERG_21 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_21, P_ID_RESPTEXTO_21, P_ID_NOTATEND_21, P_RESP_COMPLEMENTAR_21); END IF;
IF (P_ID_SUBPERG_22 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_22, P_ID_RESPTEXTO_22, P_ID_NOTATEND_22, P_RESP_COMPLEMENTAR_22); END IF;
IF (P_ID_SUBPERG_23 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_23, P_ID_RESPTEXTO_23, P_ID_NOTATEND_23, P_RESP_COMPLEMENTAR_23); END IF;
IF (P_ID_SUBPERG_24 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_24, P_ID_RESPTEXTO_24, P_ID_NOTATEND_24, P_RESP_COMPLEMENTAR_24); END IF;
IF (P_ID_SUBPERG_25 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_25, P_ID_RESPTEXTO_25, P_ID_NOTATEND_25, P_RESP_COMPLEMENTAR_25); END IF;
IF (P_ID_SUBPERG_26 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_26, P_ID_RESPTEXTO_26, P_ID_NOTATEND_26, P_RESP_COMPLEMENTAR_26); END IF;
IF (P_ID_SUBPERG_27 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_27, P_ID_RESPTEXTO_27, P_ID_NOTATEND_27, P_RESP_COMPLEMENTAR_27); END IF;
IF (P_ID_SUBPERG_28 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_28, P_ID_RESPTEXTO_28, P_ID_NOTATEND_28, P_RESP_COMPLEMENTAR_28); END IF;
IF (P_ID_SUBPERG_29 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_29, P_ID_RESPTEXTO_29, P_ID_NOTATEND_29, P_RESP_COMPLEMENTAR_29); END IF;
IF (P_ID_SUBPERG_30 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_30, P_ID_RESPTEXTO_30, P_ID_NOTATEND_30, P_RESP_COMPLEMENTAR_30); END IF;
IF (P_ID_SUBPERG_31 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_31, P_ID_RESPTEXTO_31, P_ID_NOTATEND_31, P_RESP_COMPLEMENTAR_31); END IF;
IF (P_ID_SUBPERG_32 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_32, P_ID_RESPTEXTO_32, P_ID_NOTATEND_32, P_RESP_COMPLEMENTAR_32); END IF;
IF (P_ID_SUBPERG_33 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_33, P_ID_RESPTEXTO_33, P_ID_NOTATEND_33, P_RESP_COMPLEMENTAR_33); END IF;
IF (P_ID_SUBPERG_34 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_34, P_ID_RESPTEXTO_34, P_ID_NOTATEND_34, P_RESP_COMPLEMENTAR_34); END IF;
IF (P_ID_SUBPERG_35 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_35, P_ID_RESPTEXTO_35, P_ID_NOTATEND_35, P_RESP_COMPLEMENTAR_35); END IF;
IF (P_ID_SUBPERG_36 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_36, P_ID_RESPTEXTO_36, P_ID_NOTATEND_36, P_RESP_COMPLEMENTAR_36); END IF;
IF (P_ID_SUBPERG_37 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_37, P_ID_RESPTEXTO_37, P_ID_NOTATEND_37, P_RESP_COMPLEMENTAR_37); END IF;
IF (P_ID_SUBPERG_38 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_38, P_ID_RESPTEXTO_38, P_ID_NOTATEND_38, P_RESP_COMPLEMENTAR_38); END IF;
IF (P_ID_SUBPERG_39 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_39, P_ID_RESPTEXTO_39, P_ID_NOTATEND_39, P_RESP_COMPLEMENTAR_39); END IF;
IF (P_ID_SUBPERG_40 IS NOT NULL) THEN PRC_INSERETBRESP(P_ID_ENTRV, P_ID_SUBPERG_40, P_ID_RESPTEXTO_40, P_ID_NOTATEND_40, P_RESP_COMPLEMENTAR_40); END IF;

	EXCEPTION
	
		WHEN OTHERS THEN
		
			DBMS_OUTPUT.PUT_LINE ('Comando não realizado');
			
			END;
			
			COMMIT;
      
END PRC_SAC_INSEREENTREVISTA;

Acho que criei um monstro!!! rsrsrssr

Valeu!
rerodrig
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 06 Fev 2008 10:33 am
Localização: Americana - SP

beleza...uma hora você me chamou de rerodrigo, outra de redrigo...mas beleza, é rerodrig...hehehe...Renato Rodrigues...falow!
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

Opa!
Legal... Precisando posta aí no fórum!

E aproveitando o comentário sobre a criação de um monstro e para não perder a piada, segue uma definição q li uma vez na revista Info... rsrsss

Função Mega Zord: Programadores dos anos 1980 o conhecem como Daileon. Semelhante ao padrão Lone Wolf. Motivo: criar várias funções, cada uma executando um passo de um algoritmo, causa lentidão no sistema por este ter de interromper seu fluxo para chamá-las.
Esse problema pode ser resolvido com uma única e gigante guerreira função, que recebe vários parâmetros que definirão o que deverá fazer. Geralmente usado em conjunto com Nonsense Flag.

T+
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes