Makale numarası: 187289 - Son Gözden Geçirme: 01 Temmuz 2004 Perşembe - Gözden geçirme: 1.2

Nasıl yapılır: Oracle ile iç içe geçmiş hareketler gerçekleştir

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

ADO ve ODBC iç içe geçmiş işlem desteklemez. Ancak, yerel Oracle SQL, iç içe geçmiş işlem benzetimini yapmak için kullanılan kayıt NOKTASı anahtar sözcüğünü destekler.

Daha fazla bilgi

"BILGI: iç içe hareketleri olmayan kullanılabilir, ODBC/OLE DB/ADO" başlıklı Microsoft Knowledge Base makale 177138  (http://support.microsoft.com/kb/177138/EN-US/ ) , bu iç içe geçmiş hareketler hakkında yazan:
"Her iki açık veritabanı bağlanırlığı (ODBC veya Nested hareketleri yayımlanmış bir Microsoft OLE DB sağlayıcısı destekler. ActiveX Data Objects (ADO), temel sağlayıcı duruma getirir, ancak yalnızca bir özellik destekler. Şu anda Microsoft OLE DB sağlayıcılarının hiçbiri Nested desteği Transactions. "

Bu, Oracle sürücüsü için Microsoft ODBC için geçerlidir. Ancak, kayıt NOKTASı anahtar sözcüğünü kullanarak, iç içe hareketleri benzetimini yapabilirsiniz. Iç içe hareketlerinin ODBC veya ADO desteği hakkında daha fazla bilgi için lütfen yukarıda makalesine bakın.

Kayıt NOKTASı anahtar sözcüğü, kaydedilmemiş deyimi için bir yer işareti bir Oracle oturumda temel olarak ayarlar. Geri alma ROLLBACK deyimi ile YAPıLıR</a0> seçeneğini kullanarak bu deyimler kullanabilirsiniz. Bu tüm ODBC çözümleyici kayıt NOKTASı anahtar sözcüğü doğru ayrıştırılamıyor, çünkü, Execute deyimlerinin (örneğin <connection>.Execute formunda gibi) ile yapılması gerekir.

Aşağıdaki kod, bu tüm çalışma biçimini gösterir:
    Conn = "UID=****;PWD=****;DRIVER={Microsoft ODBC for Oracle};" _
            & "SERVER=SamOracle;"

    Set Cn = New ADODB.Connection

    With Cn
        .ConnectionString = Conn
        .CursorLocation = adUseClient
        .Open
    End With

    Cn.BeginTrans
    Cn.Execute "SAVEPOINT ALPHA"
    Cn.Execute "INSERT INTO trantest VALUES(1,10)"
    Cn.Execute "INSERT INTO trantest VALUES(2,10)"
    Cn.Execute "SAVEPOINT BETA"
    Cn.Execute "INSERT INTO trantest VALUES(3,10)"
    Cn.Execute "INSERT INTO trantest VALUES(4,10)"
    Cn.Execute "ROLLBACK TO SAVEPOINT BETA"
    Cn.Execute "COMMIT"
    Cn.RollbackTrans
				
Not: Bu "Trantest" Oracle bir başka sunucuda bulunduğu bir tablo varsayar.

Bu kod, ilk iki INSERT deyimleri ve <a1>Geri</a1> ikinci iki kaydedilmeye. Tüm deyimleri kümesini CONNECTION düzeyi BeginTrans ve CommitTrans ile çevrili görürsünüz. ODBC API düzeyinde, SQLSetConnectOption SQL_AUTOCOMMIT SQL_AUTOCOMMIT_OFF için ayarlanmış; bu nedenle, bu gereklidir. Kendi işlem tamamlandıktan sonra SQL_AUTOCOMMIT SQL_AUTOCOMMIT_ON (varsayılan) için bir CommitTrans veya bir RollbackTrans yürüterek erme için iyi bir fikirdir. Kaydedilmiş veya hareketlerinizi Execute deyimlerinizdeki toplu yedeklenmiş olduğundan, CommitTrans veya RollbackTrans çağırmanız mı önemli değildir; her iki durumda da, kaydetme veya geri alma için yoktur. Her iki yaptıklarını SQL_AUTOCOMMIT_ON SQL_AUTOCOMMIT sıfırlamak için bu işlevler yalnızca aradığınız.

Referanslar

Microsoft Data Access Components (MDAC) yığın (Oracle sürücüsü için Microsoft ODBC içerir) alma hakkında daha fazla bilgi için lütfen aşağıdaki Microsoft Knowledge Base makalesine bakın:
175018  (http://support.microsoft.com/kb/175018/EN-US/ ) Al ve Microsoft Oracle ODBC sürücüsü yükleme
ODBC ile ilgili işlemler hakkında daha fazla bilgi için iç içe geçmiş ve aşağıdaki Microsoft Knowledge Base makalesine bakın:
177138  (http://support.microsoft.com/kb/177138/EN-US/ ) BILGI: İç içe geçmiş hareketler ODBC/OLE DB/ADO yok
Oracle ile ADO kullanma hakkında daha fazla bilgi için lütfen aşağıdaki Microsoft Knowledge Base makalesine bakın:
176936  (http://support.microsoft.com/kb/176936/EN-US/ ) BILGI: Visual Basic 5.0 bir Oracle veritabanı ADO kullanarak erişme

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Open Database Connectivity 2.0
  • Microsoft Open Database Connectivity 2.0
  • Microsoft Open Database Connectivity 2.0
  • Microsoft Open Database Connectivity 2.5
  • Microsoft Open Database Connectivity 2.5
  • Microsoft Open Database Connectivity 2.5
  • Microsoft Open Database Connectivity 2.0
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft ActiveX Data Objects 2.7
Anahtar Kelimeler: 
kbmt kbdatabase kbdriver kbhowto kboracle KB187289 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:187289  (http://support.microsoft.com/kb/187289/en-us/ )