<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gökalp Kuşçu &#187; oracle kayıt türü</title>
	<atom:link href="http://www.gokalpkuscu.com/tag/oracle-kayit-turu/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gokalpkuscu.com</link>
	<description>Aquila Non Captat Muscas</description>
	<lastBuildDate>Wed, 18 Jan 2012 21:05:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Kullanıcı Tanımlı PL/SQL Kayıtları &#8211; Oracle Record</title>
		<link>http://www.gokalpkuscu.com/kullanici-tanimli-plsql-kayitlari-oracle-record</link>
		<comments>http://www.gokalpkuscu.com/kullanici-tanimli-plsql-kayitlari-oracle-record#comments</comments>
		<pubDate>Fri, 02 Apr 2010 23:20:47 +0000</pubDate>
		<dc:creator>Gökalp Kuşçu</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[oracle kayıt türü]]></category>
		<category><![CDATA[oracle record]]></category>
		<category><![CDATA[oracle record tanımlama]]></category>
		<category><![CDATA[oracle type]]></category>

		<guid isPermaLink="false">http://www.gokalpkuscu.com/?p=439</guid>
		<description><![CDATA[Oracle PL/SQL bloklarında kullanılan bir veri yapısı türüde &#8220;kayıt&#8221; yani &#8220;record&#8221; olarak isimlendirilmektedir.Bir kayıt birbirleriyle ilişkili alanların bir arada tanımlanması ile oluşturulur. Kayıtın bir adı vardır. Ayrıca tıpkı PL/SQL tablolarında olduğu gibi, bir indeks yardımıyla kayıtlara ulaşılır. Kayıtın her bir alanı farklı veri türüne sahip olabilir. Kayıt Türünün Tanımlanması PL/SQL kayıt türünün oluşturulması amacıyla, blokların [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle PL/SQL bloklarında kullanılan bir veri yapısı türüde &#8220;kayıt&#8221; yani &#8220;record&#8221; olarak isimlendirilmektedir.Bir kayıt birbirleriyle ilişkili alanların bir arada tanımlanması ile oluşturulur. Kayıtın bir adı vardır. Ayrıca tıpkı PL/SQL tablolarında olduğu gibi, bir indeks yardımıyla kayıtlara ulaşılır. Kayıtın her bir alanı farklı veri türüne sahip olabilir.</p>
<p><strong>Kayıt Türünün Tanımlanması</strong></p>
<p>PL/SQL kayıt türünün oluşturulması amacıyla, blokların DECLARE bloğu için bir tanım yapılması gerekmektedir. Kayıt türlerinin yaratılabilmesi için öncelikle aşağıda görüldüğü biçimde bir tür tanımı yapılmalıdır.</p>
<ul>
          <strong>
<li>TYPE [kayıt_türü_adı] IS RECORD (alan tanımları);</li>
<p></strong></ul>
<p>Burada ki alan tanımları için bilinen pl/sql değişken tanımlama ile yapılmaktadır. Ama benim Oracle için en sevdiğim özelliklerden biri olan %TYPE ile tanımlaması, oluşturduğunuz record ile veri tabanı kolonları arasında çok güzel bir ilişki oluyor <img src='http://www.gokalpkuscu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-439"></span></p>
<p><strong>Örnek:</strong></p>
<p>Aşağıda bir PL/SQL kayıt türü tanımlanmaktadır. Bu kayıt, p_no, p_adi ve p_ucret gibi üç alandan oluşmaktadır. Bu kayıt türünün adı per_kayit_turu olarak belirlenmiştir.</p>
<pre class="brush: sql; title: ; notranslate">
 DECLARE
    TYPE per_kayit_turu IS RECORD (
       p_no    NUMBER(3),
       p_adi   VARCHAR2(15),
       p_ucret NUMBER );

 BEGIN
   --
 END;
</pre>
<p>Bu tanım içindeki alan türleri, bir diğer değişkenden ya da bir veri tabanı tablosunun alanlarından alınabilir. Böyle bir amaç için <strong>%TYPE</strong> anahtar kelimesini kullanıyoruz. Aşağıdaki örnek, kaydın alanlarına ait veri türlerinin personel tablosundan kopyalandığını göstermektedir:</p>
<pre class="brush: sql; title: ; notranslate">
 DECLARE
    TYPE per_kayit_turu IS RECORD (
        p_no    personel.personel_no%TYPE, -- harika
        p_adi   personel.adi%TYPE,
        p_ucret personel.ucret_no%TYPE );
 BEGIN
   --
 END;
</pre>
<p>Kaydın Tanımlanması<br />
RECORD anahtar kelimesi kullanılarak alan türü tanımlandıktan sonra bu türe dayanarak bir kaydın yaratılması gerekmektedir. Bunun için, yine DECLARE bloğu içinde aşağıda görüldüğü biçimde bir kayıt tanımlanır:</p>
<p>            <strong>
<li>kayıt_adı kayıt_türü_adı;</li>
<p></strong></p>
<p>Aşağıdaki blok içinde önce bir kayıt türü tanımlıyoruz ve ardından bu türe dayanarak per_kayit isimli bir kayıt yaratıyoruz.</p>
<pre class="brush: sql; title: ; notranslate">
 DECLARE
     TYPE per_kayit_turu IS RECORD (
         p_no    NUMBER(3),
         p_adi   VARCHAR2(15),
         p_ucret NUMBER);

         per_kayit per_kayit_turu;

     BEGIN
       --
     END;
 </pre>
<p>Kayıtların Kullanılması<br />
Kayıtlar bu şekilde tanımlandıktan sonra, bu kayıtların içerdiği alanlara erişim söz konusudur. Kaydın her bir alanına, o alanın ismi kullanılarak erişilir. Bunun için şu şekilde bir tanım kullanılır:</p>
<p> <strong>
<li>kayıt_adı.alan_adı </li>
<p></strong></p>
<p>Alan isimleri bu şekilde kullanılarak, bu alanlara değer atanabilir veya gerektiğinde PL/SQL bloğunun içinde kullanılabilir. Kayıt alanlarına blok içinde doğrudan değerler atanabileceği gibi, gerektiğinde veri tabanı tablolarından da veri okunarak aktarılabilir.</p>
<p>Bir kayıt tanımlandıktan sonra bu kaydın alanlarına değerler kaydetmek ve ardından bu kaydın her bir alanının içeriğini görüntülemek istiyoruz.</p>
<pre class="brush: sql; title: ; notranslate">

  --kayıt türü tanımlanıyor
   TYPE per_kayit IS RECORD
    (per_no NUMBER(3),
     p_adi VARCHAR2(15),
     p_ucret NUMBER );

  --kayıt tanımlanıyor..
  per_kayit per_kayit_turu;

  BEGIN
   -- alanlara bilgi atanıyor
    per_kayit.per_no := 305;
    per_kayit.p_adi := 'GOKALP';
    per_kayit.p_ucret := 6650;

   --alanlardaki bilgiler görüntüleniyor
    DBMS_OUTPUT.PUTLINE(per_kayit.per_no);
    DBMS_OUTPUT.PUTLINE(per_kayit.p_adi);
    DBMS_OUTPUT.PUTLINE(per_kayit.p_ucret);

  END;
</pre>
<p>Şimdiki örnek ise bir tablodan bilgiyi alma,</p>
<pre class="brush: sql; title: ; notranslate">

  --kayıt türü tanımlanıyor
   TYPE per_kayit_turu IS RECORD (
     p_no    personel.personel_no%TYPE,
     p_adi   personel.adi%TYPE,
     p_ucret personel.ucret_no%TYPE);

  --kayıt tanımlanıyor..
  per_kayit per_kayit_turu;

  BEGIN
   -- tablodan okunan bilgilere atama yapılıyor...
    SELECT personel_no, adi, ucret
        INTO per_kayit.per_no, per_kayit.p_adi, per_kayit.p_ucret
      FROM personel WHERE personel_no = 101;

   --alanlardaki bilgiler görüntüleniyor
    DBMS_OUTPUT.PUTLINE(per_kayit.per_no);
    DBMS_OUTPUT.PUTLINE(per_kayit.p_adi);
    DBMS_OUTPUT.PUTLINE(per_kayit.p_ucret);

  END;
</pre>
<blockquote><p>Çıktı alamayan arkadaşlar blok yapısının üstüne  &#8221; SET SERVEROUTPUT ON; &#8221; yazıp run etmeli&#8230;</p></blockquote>
<p>gökalp kuşçu</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gokalpkuscu.com/kullanici-tanimli-plsql-kayitlari-oracle-record/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

