Arşiv

Posts Tagged ‘set’

pl/sql de sysdate değerini değiştirme


Merhaba
Pl/Sql ortamında yazdığımız programlarda çoğu zaman sysdate bilgisini kullanırız. Bazı durumlarda yazığımız uygulamaların sistem zamanı olan sysdate değerine göre değil de ileri ya da geri bir zamanda çalışmasını isteriz. Bu gibi durumlarda yazığımız kod içerisinde tarih değerlerimizi değiştirebiliriz. Fakat sysdate olarak tanımlı olan tarih değerleri bu değişimden etkilenmezler.

Bu gibi durumlar için sysdate değerini de değiştirmeliyiz. Bu işlem için sistemin fixed_date özelliğindeki değeri değiştirip sysdate değerimizi değiştirmiş oluruz.

Örnek olarak şuanki sysdate değerimi alalıım ve bu değeri gelecek ve geçmiş zaman değerleri ile değiştirelim. Bu net olarak görebilmek için bir declare yazabiliriz. Aşağıdaki kod ile sysdate değerinin değişimi görebilirsiniz.

declare
begin
  dbms_output.put_line('Şuanki sysdate değeri : ' || to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss'));
end;

Bu kod çalıştığında sysdate değerimiz aşağıdaki gibi olacaktır.

Şuanki sysdate değeri : 02/03/2013 19:25:14

Şimdi aşağıdaki kod ile sysdate değerini geçmiş bir zamana atayalım ve sonucunu görelim.

  -- Bu komut ile sysdate değerini belirtilen format ile istediğimiz zamana ayarlıyoruz.
  alter system set fixed_date = '2013/01/01 01:01:01';

Bu atamadan sonra tekrar sysdate değerine baktığımızda sonuç aşağıdaki gibi olacaktır.

declare
begin
  dbms_output.put_line('Yeni atanan geçmiş sysdate değeri : ' || to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss'));
end;

Bu kod çalıştığında sysdate değerimiz aşağıdaki gibi olacaktır.

Yeni atanan geçmiş sysdate değeri : 01/01/2013 01:01:01

Geçmiş bir tarih atamasını sorunsuz olarak yaptık. Şimdi de gelecek bir tarih için atama yapalım.

  -- Bu komut ile sysdate değerini belirtilen format ile istediğimiz zamana ayarlıyoruz.
  alter system set fixed_date = '2014/02/02 02:02:02';

Bu atamadan sonra tekrar sysdate değerine baktığımızda sonuç aşağıdaki gibi olacaktır.

declare
begin
  dbms_output.put_line('Yeni atanan gelecek sysdate değeri : ' || to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss'));
end;

Bu kod çalıştığında sysdate değerimiz aşağıdaki gibi olacaktır.

Yeni atanan gelecek sysdate değeri : 02/02/2014 02:02:02

Tüm bu değişim işlemlerini yaptıktan sonra sysdate değerimizi eski haline almak için ise aşağıdaki kodu çalıştırmamız yeterlidir.

  -- Bu komut ile sysdate değerini eski haline alıyoruz.
  alter system set fixed_date = none;

Bu atamadan sonra tekrar sysdate değerine baktığımızda sonuç aşağıdaki gibi olacaktır. Tabi bu arada arka planda sysdate değeri ilerlediği için şuanki zaman ne ise o değeri göreceğiz.

declare
begin
  dbms_output.put_line('Şuanki sysdate değeri : ' || to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss'));
end;

Bu kod çalıştığında sysdate değerimiz aşağıdaki gibi olacaktır.

Şuanki sysdate değeri : 02/03/2013 19:43:52

Artık istediğimiz gibi bu değeri değiştirip kodlarımızda gerekli kontrol ve düzenlemeleri yapabiliriz.
Kolay gelsin.

pl/sql de rowtype kullanımı ile update işlemi yapmak.


Merhaba,
Daha önceki yazımda pl/sql de rowtype kullanımı hakkında bilgi vermiştim. Önceki yazımda rowtype yapısı ile bir tabloya kayıt ekleme yani insert işleminden bahsetmiştim. Bu bilgilere ilave olarak bir tablodaki verileri güncellemek yani update etmek içinde rowtype yapısını kullanabiliriz. Bu işlemlerin örnekleri için daha önce hazırlamış olduğum tablodan yardım alalım. Bu tablodaki veri ya da verileri hem geleneksel yöntem ile update hem de rowtype yöntemi ile update işlemini yapalım ve aradaki farkı ve kullanım kolaylığını anlayalım.
Öncelikle tablomuzdaki kayıtlara bir göz atalım.

SELECT * FROM rowtype_table;
RT_ID RT_NAME RT_DATE
1 Rowtype kullanılmadan yapılan insert 23.06.2011 08:30:41
2 Rowtype kullanılarak yapılan insert 23.06.2011 08:32:58
3 Rowtype kullanılmadan yapılan update 06.01.2011 11:55:46
4 Rowtype kullanılarak yapılan update 06.01.2011 11:56:30

Tablomuzdaki kayıtlara bir göz attığımıza göre sıra geldi geleneksel update yöntemi ile update işlemi yapmaya.

DECLARE
BEGIN
  UPDATE rowtype_table
     SET rt_id   = 33,
         rt_name = rt_name || ' geleneksel update',
         rt_date = SYSDATE
   WHERE rt_id = 3;
  COMMIT;
END;

Bu update işleminden sonra elde ettiğimiz kayıt aşağıdaki gibi oldu.

RT_ID RT_NAME RT_DATE
1 Rowtype kullanılmadan yapılan insert 23.06.2011 08:30:41
2 Rowtype kullanılarak yapılan insert 23.06.2011 08:32:58
33 Rowtype kullanılmadan yapılan update geleneksel update 06.01.2011 13:05:27
4 Rowtype kullanılarak yapılan update 06.01.2011 11:56:30

Şimdi sırada rowtype ile update işleminde. Bu işlem için kullanabileceğimiz basit bir örnek aşağıdadır.

DECLARE
  rt_table rowtype_table%ROWTYPE;
BEGIN
  rt_table.rt_id   := 44;
  rt_table.rt_name := 'Rowtype kullanılarak yapılan update rowtype update';
  rt_table.rt_date := SYSDATE;

  UPDATE rowtype_table SET ROW = rt_table WHERE rt_id = 4;
  COMMIT;
END;

Rowtype update işlemimizden sonra tablomuzun son hali aşağıdaki gibi olacaktır.

RT_ID RT_NAME RT_DATE
1 Rowtype kullanılmadan yapılan insert 23.06.2011 08:30:41
2 Rowtype kullanılarak yapılan insert 23.06.2011 08:32:58
33 Rowtype kullanılmadan yapılan update geleneksel update 06.01.2011 13:05:27
44 Rowtype kullanılarak yapılan update rowtype update 06.01.2011 13:12:50

Yaptığımız her iki update işleminde sorunsuz olarak istediğimiz verileri değiştirebiliyoruz. Bu durumda geleneksel yöntem yerine rowtype kullanımının bize kazandırdığı kolaylık sorusu aklımıza gelebilir. Bu sorunun cevabı yaptığımız örnekteki tablo gibi az sayıda kolunu olan tabloların update işlemlerinde değil , büyük tablolarda çok fazla sayıda kolon update işlemi yapacağımız zaman kod okunurluğu ve takibi konusunda bize sağladığı kolaylık olacaktır.

Kolay gelsin.

ascii,chr ve binary karakter set tablosu


 

Text ASCII Binary
 n/a   chr(0)   00000000 
 n/a   chr(1)   00000001 
 n/a   chr(2)   00000010 
 n/a   chr(3)   00000011 
 n/a   chr(4)   00000100 
 n/a   chr(5)   00000101 
 n/a   chr(6)   00000110 
 n/a   chr(7)   00000111 
 n/a   chr(8)   00001000 
 n/a   chr(9)   00001001 
 n/a   chr(10)   00001010 
 n/a   chr(11)   00001011 
 n/a   chr(12)   00001100 
 n/a   chr(13)   00001101 
 n/a   chr(14)   00001110 
 n/a   chr(15)   00001111 
 n/a   chr(16)   00010000 
 n/a   chr(17)   00010001 
 n/a   chr(18)   00010010 
 n/a   chr(19)   00010011 
 n/a   chr(20)   00010100 
 n/a   chr(21)   00010101 
 n/a   chr(22)   00010110 
 n/a   chr(23)   00010111 
 n/a   chr(24)   00011000 
 n/a   chr(25)   00011001 
 n/a   chr(26)   00011010 
 n/a   chr(27)   00011011 
 n/a   chr(28)   00011100 
 n/a   chr(29)   00011101 
 n/a   chr(30)   00011110 
 n/a   chr(31)   00011111 
 n/a   chr(32)   00100000 
 !   chr(33)   00100001 
 ”   chr(34)   00100010 
 #   chr(35)   00100011 
 $   chr(36)   00100100 
 %   chr(37)   00100101 
 &   chr(38)   00100110 
 ‘   chr(39)   00100111 
 (   chr(40)   00101000 
 )   chr(41)   00101001 
 *   chr(42)   00101010 
 +   chr(43)   00101011 
 ,   chr(44)   00101100 
 –   chr(45)   00101101 
 .   chr(46)   00101110 
 /   chr(47)   00101111 
 0   chr(48)   00110000 
 1   chr(49)   00110001 
 2   chr(50)   00110010 
 3   chr(51)   00110011 
 4   chr(52)   00110100 
 5   chr(53)   00110101 
 6   chr(54)   00110110 
 7   chr(55)   00110111 
 8   chr(56)   00111000 
 9   chr(57)   00111001 
 :   chr(58)   00111010 
 ;   chr(59)   00111011 
 <   chr(60)   00111100 
 =   chr(61)   00111101 
 >   chr(62)   00111110 
 ?   chr(63)   00111111 
 @   chr(64)   01000000 
 A   chr(65)   01000001 
 B   chr(66)   01000010 
 C   chr(67)   01000011 
 D   chr(68)   01000100 
 E   chr(69)   01000101 
 F   chr(70)   01000110 
 G   chr(71)   01000111 
 H   chr(72)   01001000 
 I   chr(73)   01001001 
 J   chr(74)   01001010 
 K   chr(75)   01001011 
 L   chr(76)   01001100 
 M   chr(77)   01001101 
 N   chr(78)   01001110 
 O   chr(79)   01001111 
 P   chr(80)   01010000 
 Q   chr(81)   01010001 
 R   chr(82)   01010010 
 S   chr(83)   01010011 
 T   chr(84)   01010100 
 U   chr(85)   01010101 
 V   chr(86)   01010110 
 W   chr(87)   01010111 
 X   chr(88)   01011000 
 Y   chr(89)   01011001 
 Z   chr(90)   01011010 
 [   chr(91)   01011011 
 \   chr(92)   01011100 
 ]   chr(93)   01011101 
 ^   chr(94)   01011110 
 _   chr(95)   01011111 
 `   chr(96)   01100000 
 a   chr(97)   01100001 
 b   chr(98)   01100010 
 c   chr(99)   01100011 
 d   chr(100)   01100100 
 e   chr(101)   01100101 
 f   chr(102)   01100110 
 g   chr(103)   01100111 
 h   chr(104)   01101000 
 i   chr(105)   01101001 
 j   chr(106)   01101010 
 k   chr(107)   01101011 
 l   chr(108)   01101100 
 m   chr(109)   01101101 
 n   chr(110)   01101110 
 o   chr(111)   01101111 
 p   chr(112)   01110000 
 q   chr(113)   01110001 
 r   chr(114)   01110010 
 s   chr(115)   01110011 
 t   chr(116)   01110100 
 u   chr(117)   01110101 
 v   chr(118)   01110110 
 w   chr(119)   01110111 
 x   chr(120)   01111000 
 y   chr(121)   01111001 
 z   chr(122)   01111010 
 {   chr(123)   01111011 
 |   chr(124)   01111100 
 }   chr(125)   01111101 
 ~   chr(126)   01111110 
 n/a   chr(127)   01111111 
Text ASCII Binary
 n/a   chr(127)   01111111 
 €   chr(128)   10000000 
 n/a   chr(129)   10000001 
 ‚   chr(130)   10000010 
 ƒ   chr(131)   10000011 
 „   chr(132)   10000100 
 …   chr(133)   10000101 
 †   chr(134)   10000110 
 ‡   chr(135)   10000111 
 ˆ   chr(136)   10001000 
 ‰   chr(137)   10001001 
 Š   chr(138)   10001010 
 ‹   chr(139)   10001011 
 Œ   chr(140)   10001100 
 n/a   chr(141)   10001101 
 Ž   chr(142)   10001110 
 n/a   chr(143)   10001111 
 n/a   chr(144)   10010000 
 ‘   chr(145)   10010001 
 ’   chr(146)   10010010 
 “   chr(147)   10010011 
 ”   chr(148)   10010100 
 •   chr(149)   10010101 
 –   chr(150)   10010110 
 —   chr(151)   10010111 
 ˜   chr(152)   10011000 
 ™   chr(153)   10011001 
 š   chr(154)   10011010 
 ›   chr(155)   10011011 
 œ   chr(156)   10011100 
 n/a   chr(157)   10011101 
 ž   chr(158)   10011110 
 Ÿ   chr(159)   10011111 
     chr(160)   10100000 
 ¡   chr(161)   10100001 
 ¢   chr(162)   10100010 
 £   chr(163)   10100011 
 ¤   chr(164)   10100100 
 ¥   chr(165)   10100101 
 ¦   chr(166)   10100110 
 §   chr(167)   10100111 
 ¨   chr(168)   10101000 
 ©   chr(169)   10101001 
 ª   chr(170)   10101010 
 «   chr(171)   10101011 
 ¬   chr(172)   10101100 
 ­   chr(173)   10101101 
 ®   chr(174)   10101110 
 ¯   chr(175)   10101111 
 °   chr(176)   10110000 
 ±   chr(177)   10110001 
 ²   chr(178)   10110010 
 ³   chr(179)   10110011 
 ´   chr(180)   10110100 
 µ   chr(181)   10110101 
 ¶   chr(182)   10110110 
 ·   chr(183)   10110111 
 ¸   chr(184)   10111000 
 ¹   chr(185)   10111001 
 º   chr(186)   10111010 
 »   chr(187)   10111011 
 ¼   chr(188)   10111100 
 ½   chr(189)   10111101 
 ¾   chr(190)   10111110 
 ¿   chr(191)   10111111 
 À   chr(192)   11000000 
 Á   chr(193)   11000001 
 Â   chr(194)   11000010 
 Ã   chr(195)   11000011 
 Ä   chr(196)   11000100 
 Å   chr(197)   11000101 
 Æ   chr(198)   11000110 
 Ç   chr(199)   11000111 
 È   chr(200)   11001000 
 É   chr(201)   11001001 
 Ê   chr(202)   11001010 
 Ë   chr(203)   11001011 
 Ì   chr(204)   11001100 
 Í   chr(205)   11001101 
 Î   chr(206)   11001110 
 Ï   chr(207)   11001111 
 Ð   chr(208)   11010000 
 Ñ   chr(209)   11010001 
 Ò   chr(210)   11010010 
 Ó   chr(211)   11010011 
 Ô   chr(212)   11010100 
 Õ   chr(213)   11010101 
 Ö   chr(214)   11010110 
 ×   chr(215)   11010111 
 Ø   chr(216)   11011000 
 Ù   chr(217)   11011001 
 Ú   chr(218)   11011010 
 Û   chr(219)   11011011 
 Ü   chr(220)   11011100 
 Ý   chr(221)   11011101 
 Þ   chr(222)   11011110 
 ß   chr(223)   11011111 
 à   chr(224)   11100000 
 á   chr(225)   11100001 
 â   chr(226)   11100010 
 ã   chr(227)   11100011 
 ä   chr(228)   11100100 
 å   chr(229)   11100101 
 æ   chr(230)   11100110 
 ç   chr(231)   11100111 
 è   chr(232)   11101000 
 é   chr(233)   11101001 
 ê   chr(234)   11101010 
 ë   chr(235)   11101011 
 ì   chr(236)   11101100 
 í   chr(237)   11101101 
 î   chr(238)   11101110 
 ï   chr(239)   11101111 
 ð   chr(240)   11110000 
 ñ   chr(241)   11110001 
 ò   chr(242)   11110010 
 ó   chr(243)   11110011 
 ô   chr(244)   11110100 
 õ   chr(245)   11110101 
 ö   chr(246)   11110110 
 ÷   chr(247)   11110111 
 ø   chr(248)   11111000 
 ù   chr(249)   11111001 
 ú   chr(250)   11111010 
 û   chr(251)   11111011 
 ü   chr(252)   11111100 
 ý   chr(253)   11111101 
 þ   chr(254)   11111110 
 ÿ   chr(255)   11111111 
Kategoriler:Windows Etiketler:, , , , , ,