CREATE OR REPLACE PROCEDURE query_invoice(
month VARCHAR2,
year VARCHAR2) IS
TYPE cur_typ IS REF CURSOR;
c cur_typ;
query_str VARCHAR2(200);
inv_num NUMBER;
inv_cust VARCHAR2(20);
inv_amt NUMBER;
BEGIN
query_str := 'SELECT num, cust, amt FROM inv_' || month ||'_'|| year
|| ' WHERE invnum = :id';
OPEN c FOR query_str USING inv_num;
LOOP
FETCH c INTO inv_num, inv_cust, inv_amt;
EXIT WHEN c%NOTFOUND;
-- process row here
END LOOP;
CLOSE c;
END;
Oracle – Dynamic Cursor SQL
Aralık 21st, 2011
Orhan AKDOĞAN SQL Developer -”ORA-01882: timezone region not found” Hatası
Kasım 5th, 2011
Orhan AKDOĞAN SQL Developer da alınan “ORA-01882: timezone region not found” Hatasını gidermek için;
Sqldeveloper kurulum dizinine gidip;
sqldeveloper\sqldeveloper\bin\sqldeveloper.conf
yolundaki dosyayı notepad ile açıp
satır sonuna
AddVMOption -Duser.timezone=”+01:00″
Değerini ekleyip tekrar denemeliyiz.
Oracle – Satırları virgülle ayrılmış tek satır olarak getirmek
Temmuz 31st, 2011
Orhan AKDOĞAN SELECT table_name "Tablo Adı" , wmsys.wm_concat(column_name) "Kolon Listesi" FROM all_tab_columns WHERE table_name='TBLSTSABIT' -- Tablo adını yazıyoruz. and rownum<20 --ilk 20 kolonu GROUP BY table_name
Oracle – Object Creation and Modification Dates
Temmuz 25th, 2011
Orhan AKDOĞAN SELECT owner, object_name, TO_CHAR (created, 'YYYY-MM-DD hh:mi:ss') created,
TO_CHAR (last_ddl_time, 'YYYY-MM-DD hh:mi:ss') modified, object_type
FROM dba_objects
WHERE owner LIKE UPPER ('XTablespace')
ORDER BY created,modified DESC
Oracle – Table Columns Report
Temmuz 25th, 2011
Orhan AKDOĞAN SELECT a.owner, table_name || ' ' || object_type table_name, column_name,
data_type, data_length, DECODE (nullable, 'N', 'NO', 'YES') nullable
FROM dba_tab_columns a, dba_objects b
WHERE a.owner NOT IN ('SYS', 'SYSTEM')
AND a.owner = UPPER ('Xtablespace')
AND a.owner = b.owner
AND a.table_name LIKE UPPER ('Xtablename')
AND a.table_name = b.object_name
AND object_type IN ('TABLE', 'VIEW', 'CLUSTER')
ORDER BY owner, object_type, table_name, column_id
Oracle – Tablo İstatistikleri
Temmuz 25th, 2011
Orhan AKDOĞAN Tablo satır adetleri vb. bilgileri izleyebilirsiniz.
SELECT owner, table_name, tablespace_name, num_rows, blocks, empty_blocks,
avg_row_len, sample_size, last_analyzed
FROM dba_tables
WHERE UPPER (owner) LIKE 'xxx'
ORDER BY owner, table_name
Oracle – For Update
Temmuz 24th, 2011
Orhan AKDOĞAN Select sonuna yazılarak kullanılır.Seçilen kayıtlara, commit veya rollback yapılana kadar DML işlemi yapılmasını engeller.
Yani bu kayıtlara lock koyulur.
SELECT * FROM tblfatuirs WHERE fatirs_no= 'DN0000012345' FOR UPDATE;
Oracle – PL/SQL Regular Expression
Temmuz 23rd, 2011
Orhan AKDOĞAN PL/SQL içerisinde işleri kolaylaştıran pek çok regular expression ifadesi bulunuyor.
“REGEXP_” ile başlayan bu ifadelerden biri de REGEXP_REPLACE dir.
Aşağıdaki örnekde REGEXP_REPLACE ile, ilgili alanın içinden yalnızca sayıları alıyoruz.
REGEXP_REPLACE(table.field,'[^0-9]')
PL/SQL Regular Expression komutları hakkında daha detaylı bilgiye aşağıdaki linkten ulaşabilirsiniz.
http://psoug.org/reference/regexp.html
Oracle – PL/SQL ile Mail Gönderme
Temmuz 14th, 2011
Orhan AKDOĞAN --Öncelikle göndermek için gereken yetkileri tanımlıyoruz,
--1
BEGIN
dbms_network_acl_admin.create_acl (
acl => 'cahari.xml',
description => 'mai atmak için',
principal => 'tablespace yazın',
is_grant => true,
privilege => 'connect',
start_date => null,
end_date => null
);
END;
--2
begin
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl => 'cahari.xml',
principal => 'tablespace yazın',
is_grant => true,
privilege => 'resolve');
end;
--3
begin
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl => 'cahari.xml',
host => 'Buraya host ip yi yazıyoruz.');
end;
--4
--Procedure yaratılıyor
create or replace
PROCEDURE MailGonder
( sender IN VARCHAR2,
recipient IN VARCHAR2,
subject IN VARCHAR2,
message IN VARCHAR2)
IS
mailhost VARCHAR2(30) := '10.10.13.253';
mail_conn utl_smtp.connection;
crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );
mesg VARCHAR2( 1000 );
BEGIN
mail_conn := utl_smtp.open_connection(mailhost, 25);
mesg:= 'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf
||
'From: <'||sender||'>' || crlf ||
'Subject: '||subject || crlf ||
'To: '||recipient || crlf ||
''||crlf||
'MIME-Version: 1.0'||crlf|| message;
utl_smtp.helo(mail_conn, mailhost);
utl_smtp.mail(mail_conn, sender);
utl_smtp.rcpt(mail_conn, recipient);
utl_smtp.data(mail_conn, mesg);
utl_smtp.quit(mail_conn);
Exception
WHEN OTHERS THEN
raise_application_error(-20002,'Mail Gönderilemedi'||SQLERRM);
END;
--5
--Kullanım şekli
Begin
MailGonder('orhan@mail.com','orhan@mail.com','Konu','Deneme mesajı');
End;

Posted in
Tags: 
Son Yorumlar