CREATE Function AchaDescricaoConta(var_codcoligada number,
var_contafolha varchar,
var_codigointegracao varchar)
return varchar
as
VAR_CONTACONTABIL varchar2(40);
VAR_DESCRICAO varchar2(40);
begin
select contasaldus into VAR_CONTACONTABIL
from pcontas
where codcoligada=var_codcoligada
and codcolconta=var_codcoligada
and grpconta=var_contafolha
and integrcfunc=var_codigointegracao;
select descricao into VAR_DESCRICAO
from cconta
where codcoligada=var_codcoligada
and codconta=VAR_CONTACONTABIL ;
return(VAR_DESCRICAO);
end;
Mostrando postagens com marcador Exemplos. Mostrar todas as postagens
Mostrando postagens com marcador Exemplos. Mostrar todas as postagens
sábado, 29 de agosto de 2015
SQL - Cursor (modelo)
DECLARE @nome_da_tabela varchar(40)
DECLARE meu_cursor CURSOR FOR
SELECT table_name FROM information_schema.tables WHERE table_type='BASE TABLE' and table_name like 'P%'
OPEN meu_cursor
FETCH NEXT FROM meu_cursor
INTO @nome_da_tabela
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE ('delete FROM ' + @nome_da_tabela)
FETCH NEXT FROM meu_cursor
INTO @nome_da_tabela
END
CLOSE meu_cursor
DEALLOCATE meu_cursor
GO
DECLARE meu_cursor CURSOR FOR
SELECT table_name FROM information_schema.tables WHERE table_type='BASE TABLE' and table_name like 'P%'
OPEN meu_cursor
FETCH NEXT FROM meu_cursor
INTO @nome_da_tabela
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE ('delete FROM ' + @nome_da_tabela)
FETCH NEXT FROM meu_cursor
INTO @nome_da_tabela
END
CLOSE meu_cursor
DEALLOCATE meu_cursor
GO
SQL - Case (Exemplo)
(SELECT 'diasemana' =
CASE
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 1 THEN 'Domingo'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 2 THEN 'Segunda'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 3 THEN 'Terça'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 4 THEN 'Quarta'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 5 THEN 'Quinta'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 6 THEN 'Sexta'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 7 THEN 'Sábado'
END) DIASEMANA,
CASE
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 1 THEN 'Domingo'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 2 THEN 'Segunda'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 3 THEN 'Terça'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 4 THEN 'Quarta'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 5 THEN 'Quinta'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 6 THEN 'Sexta'
WHEN DATEPART(WEEKDAY, ZATENDIMENTOS.DTHENTRADA) = 7 THEN 'Sábado'
END) DIASEMANA,
Oracle - Exemplos
GRANT CREATE DATABASE LINK TO RM;
/
CREATE TABLE ZTABELASEXCLUIDAS (NOMETABELA VARCHAR(150),
CONSTRAINT PKZTABELASEXCLUIDAS PRIMARY KEY (NOMETABELA));
/
CREATE TABLE ZALIASORIGEM (NOMEALIAS VARCHAR(60),
CODCOLIGADA NUMBER(5),
CONSTRAINT PKZALIASORIGEM PRIMARY KEY (NOMEALIAS));
/
CREATE OR REPLACE PROCEDURE SP_ATIVAFOREIGNKEYS (P_ACAO IN VARCHAR)
AS
P_NOMETABELA VARCHAR(128);
P_CHAVEESTRANGEIRA VARCHAR(128);
P_CURSORNRO INTEGER;
P_EXECUTE INTEGER;
CURSOR CURSORTABELAS IS SELECT TABLE_NAME
FROM USER_TABLES;
CURSOR CURSORCONSTRAINTS IS SELECT CONSTRAINT_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = P_NOMETABELA
AND CONSTRAINT_TYPE = 'R'; /* SOMENTE FOREIGN KEYS */
BEGIN
OPEN CURSORTABELAS;
FETCH CURSORTABELAS INTO P_NOMETABELA;
LOOP
EXIT WHEN CURSORTABELAS%NOTFOUND;
OPEN CURSORCONSTRAINTS;
FETCH CURSORCONSTRAINTS INTO P_CHAVEESTRANGEIRA;
LOOP
EXIT WHEN CURSORCONSTRAINTS%NOTFOUND;
P_CURSORNRO := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(P_CURSORNRO, 'ALTER TABLE ' || P_NOMETABELA || ' ' || P_ACAO || ' CONSTRAINT ' || P_CHAVEESTRANGEIRA, DBMS_SQL.NATIVE);
P_EXECUTE :=DBMS_SQL.EXECUTE(P_CURSORNRO);
DBMS_SQL.CLOSE_CURSOR(P_CURSORNRO);
FETCH CURSORCONSTRAINTS INTO P_CHAVEESTRANGEIRA;
END LOOP;
CLOSE CURSORCONSTRAINTS;
FETCH CURSORTABELAS INTO P_NOMETABELA;
END LOOP;
CLOSE CURSORTABELAS;
END;
/
/
CREATE TABLE ZTABELASEXCLUIDAS (NOMETABELA VARCHAR(150),
CONSTRAINT PKZTABELASEXCLUIDAS PRIMARY KEY (NOMETABELA));
/
CREATE TABLE ZALIASORIGEM (NOMEALIAS VARCHAR(60),
CODCOLIGADA NUMBER(5),
CONSTRAINT PKZALIASORIGEM PRIMARY KEY (NOMEALIAS));
/
CREATE OR REPLACE PROCEDURE SP_ATIVAFOREIGNKEYS (P_ACAO IN VARCHAR)
AS
P_NOMETABELA VARCHAR(128);
P_CHAVEESTRANGEIRA VARCHAR(128);
P_CURSORNRO INTEGER;
P_EXECUTE INTEGER;
CURSOR CURSORTABELAS IS SELECT TABLE_NAME
FROM USER_TABLES;
CURSOR CURSORCONSTRAINTS IS SELECT CONSTRAINT_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = P_NOMETABELA
AND CONSTRAINT_TYPE = 'R'; /* SOMENTE FOREIGN KEYS */
BEGIN
OPEN CURSORTABELAS;
FETCH CURSORTABELAS INTO P_NOMETABELA;
LOOP
EXIT WHEN CURSORTABELAS%NOTFOUND;
OPEN CURSORCONSTRAINTS;
FETCH CURSORCONSTRAINTS INTO P_CHAVEESTRANGEIRA;
LOOP
EXIT WHEN CURSORCONSTRAINTS%NOTFOUND;
P_CURSORNRO := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(P_CURSORNRO, 'ALTER TABLE ' || P_NOMETABELA || ' ' || P_ACAO || ' CONSTRAINT ' || P_CHAVEESTRANGEIRA, DBMS_SQL.NATIVE);
P_EXECUTE :=DBMS_SQL.EXECUTE(P_CURSORNRO);
DBMS_SQL.CLOSE_CURSOR(P_CURSORNRO);
FETCH CURSORCONSTRAINTS INTO P_CHAVEESTRANGEIRA;
END LOOP;
CLOSE CURSORCONSTRAINTS;
FETCH CURSORTABELAS INTO P_NOMETABELA;
END LOOP;
CLOSE CURSORTABELAS;
END;
/
Oracle - Verificação
set heading off
set pagesize 0
set verify off
set feedback off
set termout off
set linesize 132
prompt spool count_rows.log
prompt !date +'%X'
spool c:\arquivo1.txt
select trim(name),trim(value) from v$parameter;
spool of
spool c:\arquivo2.txt
select * from nls_database_parameters;
spool of
prompt !date +'%X'
prompt spool off
spool off
set pagesize 0
set verify off
set feedback off
set termout off
set linesize 132
prompt spool count_rows.log
prompt !date +'%X'
spool c:\arquivo1.txt
select trim(name),trim(value) from v$parameter;
spool of
spool c:\arquivo2.txt
select * from nls_database_parameters;
spool of
prompt !date +'%X'
prompt spool off
spool off
Oracle - Procedures (Exemplos)
1
CREATE OR REPLACE PROCEDURE TESTE (COLUNA IN VARCHAR2,TABELA IN VARCHAR2 ) IS
CUR_PESSOA INTEGER;
TEXTO VARCHAR(100);
TEMP NUMBER;
BEGIN
CUR_PESSOA:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.parse(CUR_PESSOA,'SELECT '||COLUNA|| ' FROM '|| TABELA, DBMS_SQL.V7);
DBMS_SQL.DEFINE_COLUMN (CUR_PESSOA,1,TEXTO,100);
TEMP:=DBMS_SQL.EXECUTE(CUR_PESSOA);
LOOP
IF DBMS_SQL.FETCH_ROWS (CUR_PESSOA)=0
THEN EXIT;
ELSE
DBMS_SQL.COLUMN_VALUE (CUR_PESSOA,1,TEXTO);
DBMS_OUTPUT.PUT_LINE (TEXTO);
END IF;
END LOOP;
DBMS_SQL.CLOSE_CURSOR (CUR_PESSOA);
END TESTE;
2
CREATE OR REPLACE PROCEDURE QUERY (QUERY_IN IN VARCHAR2) IS
CUR_HANDLE INTEGER;
TEMP NUMBER;
BEGIN
CUR_HANDLE:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(CUR_HANDLE,QUERY_IN,DBMS_SQL.V7);
TEMP:=DBMS_SQL.EXECUTE(CUR_HANDLE);
DBMS_SQL.CLOSE_CURSOR (CUR_HANDLE);
DBMS_OUTPUT.PUT_LINE (Num. de linha tratadas:' || temp);
end query ;
3
DECLARE
V_TABELA VARCHAR2 (100);
V_COLUNA VARCHAR2 (100);
LINHA VARCHAR2 (200);
out_file UTL_File.File_type;
CURSOR TAB IS
SELECT TABLE_NAME TABELA ,COLUMN_NAME COLUNA FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE 'CODCOLI%';
BEGIN
out_file := Utl_File.Fopen ('C:\TEMP','DELCOL.SQL','w');
FOR REG_TAB IN TAB LOOP
V_TABELA := REG_TAB.TABELA;
V_COLUNA := REG_TAB.COLUNA;
LINHA := 'DELETE FROM ' ||REG_TAB.TABELA || ' WHERE ' || REG_TAB.COLUNA || '=1;';
UTL_FILE.PUT_LINE (OUT_FILE,LINHA);
END LOOP;
Utl_File.FClose (out_file);
Dbms_Output.Put_Line ('ARQUIVO GERADO COM SUCESSO');
EXCEPTION
WHEN UTL_FILE.INVALID_OPERATION THEN
Dbms_Output.Put_Line ('OPERAÇÃO INVALIDA NO ARQUIVO.');
Utl_File.FClose (OUT_FILE);
WHEN UTL_FILE.INVALID_PATH THEN
Dbms_Output.Put_Line ('DIRETORIO INVÁLIDO');
Utl_File.FClose (OUT_FILE);
END ;
CREATE OR REPLACE PROCEDURE TESTE (COLUNA IN VARCHAR2,TABELA IN VARCHAR2 ) IS
CUR_PESSOA INTEGER;
TEXTO VARCHAR(100);
TEMP NUMBER;
BEGIN
CUR_PESSOA:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.parse(CUR_PESSOA,'SELECT '||COLUNA|| ' FROM '|| TABELA, DBMS_SQL.V7);
DBMS_SQL.DEFINE_COLUMN (CUR_PESSOA,1,TEXTO,100);
TEMP:=DBMS_SQL.EXECUTE(CUR_PESSOA);
LOOP
IF DBMS_SQL.FETCH_ROWS (CUR_PESSOA)=0
THEN EXIT;
ELSE
DBMS_SQL.COLUMN_VALUE (CUR_PESSOA,1,TEXTO);
DBMS_OUTPUT.PUT_LINE (TEXTO);
END IF;
END LOOP;
DBMS_SQL.CLOSE_CURSOR (CUR_PESSOA);
END TESTE;
2
CREATE OR REPLACE PROCEDURE QUERY (QUERY_IN IN VARCHAR2) IS
CUR_HANDLE INTEGER;
TEMP NUMBER;
BEGIN
CUR_HANDLE:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(CUR_HANDLE,QUERY_IN,DBMS_SQL.V7);
TEMP:=DBMS_SQL.EXECUTE(CUR_HANDLE);
DBMS_SQL.CLOSE_CURSOR (CUR_HANDLE);
DBMS_OUTPUT.PUT_LINE (Num. de linha tratadas:' || temp);
end query ;
3
DECLARE
V_TABELA VARCHAR2 (100);
V_COLUNA VARCHAR2 (100);
LINHA VARCHAR2 (200);
out_file UTL_File.File_type;
CURSOR TAB IS
SELECT TABLE_NAME TABELA ,COLUMN_NAME COLUNA FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE 'CODCOLI%';
BEGIN
out_file := Utl_File.Fopen ('C:\TEMP','DELCOL.SQL','w');
FOR REG_TAB IN TAB LOOP
V_TABELA := REG_TAB.TABELA;
V_COLUNA := REG_TAB.COLUNA;
LINHA := 'DELETE FROM ' ||REG_TAB.TABELA || ' WHERE ' || REG_TAB.COLUNA || '=1;';
UTL_FILE.PUT_LINE (OUT_FILE,LINHA);
END LOOP;
Utl_File.FClose (out_file);
Dbms_Output.Put_Line ('ARQUIVO GERADO COM SUCESSO');
EXCEPTION
WHEN UTL_FILE.INVALID_OPERATION THEN
Dbms_Output.Put_Line ('OPERAÇÃO INVALIDA NO ARQUIVO.');
Utl_File.FClose (OUT_FILE);
WHEN UTL_FILE.INVALID_PATH THEN
Dbms_Output.Put_Line ('DIRETORIO INVÁLIDO');
Utl_File.FClose (OUT_FILE);
END ;
Assinar:
Postagens (Atom)