Fungsi SQLExecDirect
Kesesuaian
Versi diperkenalkan: Kepatuhan Standar ODBC 1.0: ISO 92
Ringkasan
SQLExecDirect menjalankan pernyataan yang dapat disiapkan, menggunakan nilai variabel penanda parameter saat ini jika ada parameter dalam pernyataan. SQLExecDirect adalah cara tercepat untuk mengirimkan pernyataan SQL untuk eksekusi satu kali.
Sintaks
SQLRETURN SQLExecDirect(
SQLHSTMT StatementHandle,
SQLCHAR * StatementText,
SQLINTEGER TextLength);
Argumen
StatementHandle
[Input] Handel pernyataan.
StatementText
[Input] Pernyataan SQL yang akan dijalankan.
TextLength
[Input] Panjang *StatementText dalam karakter.
Mengembalikan
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NEED_DATA, SQL_STILL_EXECUTING, SQL_ERROR, SQL_NO_DATA, SQL_INVALID_HANDLE, atau SQL_PARAM_DATA_AVAILABLE.
Diagnostik
Saat SQLExecDirect mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO, nilai SQLSTATE terkait dapat diperoleh dengan memanggil SQLGetDiagRec dengan HandleType SQL_HANDLE_STMT dan Handle of StatementHandle. Tabel berikut mencantumkan nilai SQLSTATE yang umumnya dikembalikan oleh SQLExecDirect dan menjelaskan masing-masing dalam konteks fungsi ini; notasi "(DM)" mendahului deskripsi SQLSTATEs yang dikembalikan oleh Driver Manager. Kode pengembalian yang terkait dengan setiap nilai SQLSTATE SQL_ERROR, kecuali disebutkan sebaliknya.
SQLSTATE | Kesalahan | Deskripsi |
---|---|---|
01000 | Peringatan umum | Pesan informasi khusus driver. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
01001 | Konflik operasi kursor | *StatementText berisi pernyataan pembaruan atau penghapusan yang diposisikan, dan tidak ada baris atau lebih dari satu baris yang diperbarui atau dihapus. (Untuk informasi selengkapnya tentang pembaruan ke lebih dari satu baris, lihat deskripsi SQL_ATTR_SIMULATE_CURSOR Atribut di SQLSetStmtAttr.) (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
01003 | Nilai NULL dihilangkan dalam fungsi yang ditetapkan | Argumen StatementText berisi fungsi yang ditetapkan (seperti AVG, MAX, MIN, dan sebagainya), tetapi bukan fungsi kumpulan COUNT, dan nilai argumen NULL dihilangkan sebelum fungsi diterapkan. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
01004 | Data string, terpotong kanan | String atau data biner yang dikembalikan untuk parameter input/output atau output menghasilkan pemotongan karakter nonblank atau data biner non-NULL. Jika itu adalah nilai string, nilai tersebut dipotong kanan. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
01006 | Hak istimewa tidak dicabut | *StatementText berisi pernyataan REVOKE , dan pengguna tidak memiliki hak istimewa yang ditentukan. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
01007 | Hak istimewa tidak diberikan | *StatementText adalah pernyataan GRANT , dan pengguna tidak dapat diberikan hak istimewa yang ditentukan. |
01S02 | Nilai opsi berubah | Atribut pernyataan tertentu tidak valid karena kondisi kerja implementasi, sehingga nilai serupa untuk sementara diganti. (SQLGetStmtAttr dapat dipanggil untuk menentukan nilai yang diganti sementara.) Nilai pengganti valid untuk StatementHandle hingga kursor ditutup, di mana atribut pernyataan kembali ke nilai sebelumnya. Atribut pernyataan yang dapat diubah adalah: SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ ATTR_SIMULATE_CURSOR (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
01S07 | Pemotongan pecahan | Data yang dikembalikan untuk parameter input/output atau output dipotong sedih sehingga bagian pecahan dari jenis data numerik dipotong atau bagian pecahan dari komponen waktu dari jenis data waktu, tanda waktu, atau interval dipotong. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
07002 | Bidang COUNT salah | Jumlah parameter yang ditentukan dalam SQLBindParameter kurang dari jumlah parameter dalam pernyataan SQL yang terkandung dalam *StatementText. SQLBindParameter dipanggil dengan ParameterValuePtr diatur ke pointer null, StrLen_or_IndPtr tidak diatur ke SQL_NULL_DATA atau SQL_DATA_AT_EXEC, dan InputOutputType tidak diatur ke SQL_PARAM_OUTPUT, sehingga jumlah parameter yang ditentukan dalam SQLBindParameter lebih besar dari jumlah parameter dalam pernyataan SQL yang terkandung dalam *StatementText. |
07006 | Pelanggaran atribut jenis data terbatas | Nilai data yang diidentifikasi oleh argumen ValueType di SQLBindParameter untuk parameter terikat tidak dapat dikonversi ke jenis data yang diidentifikasi oleh argumen ParameterType di SQLBindParameter. Nilai data yang dikembalikan untuk parameter yang terikat sebagai SQL_PARAM_INPUT_OUTPUT atau SQL_PARAM_OUTPUT tidak dapat dikonversi ke jenis data yang diidentifikasi oleh argumen ValueType di SQLBindParameter. (Jika nilai data untuk satu atau beberapa baris tidak dapat dikonversi tetapi satu atau beberapa baris berhasil dikembalikan, fungsi ini mengembalikan SQL_SUCCESS_WITH_INFO.) |
07007 | Pelanggaran nilai parameter terbatas | Jenis parameter SQL_PARAM_INPUT_OUTPUT_STREAM hanya digunakan untuk parameter yang mengirim dan menerima data dalam beberapa bagian. Buffer terikat input tidak diperbolehkan untuk jenis parameter ini. Kesalahan ini akan terjadi ketika jenis parameter SQL_PARAM_INPUT_OUTPUT, dan ketika *StrLen_or_IndPtr yang ditentukan dalam SQLBindParameter tidak sama dengan SQL_NULL_DATA, SQL_DEFAULT_PARAM, SQL_LEN_DATA_AT_EXEC(len), atau SQL_DATA_AT_EXEC. |
07S01 | Penggunaan parameter default tidak valid | Nilai parameter, diatur dengan SQLBindParameter, SQL_DEFAULT_PARAM, dan parameter yang sesuai tidak memiliki nilai default. |
08S01 | Kegagalan tautan komunikasi | Tautan komunikasi antara driver dan sumber data tempat driver tersambung gagal sebelum fungsi selesai diproses. |
21S01 | Sisipkan daftar nilai tidak cocok dengan daftar kolom | *StatementText berisi pernyataan INSERT , dan jumlah nilai yang akan disisipkan tidak cocok dengan tingkat tabel turunan. |
21S02 | Tingkat tabel turunan tidak cocok dengan daftar kolom | *StatementText berisi pernyataan CREATE VIEW , dan daftar kolom yang tidak memenuhi syarat (jumlah kolom yang ditentukan untuk tampilan dalam argumen pengidentifikasi kolom pernyataan SQL) berisi lebih banyak nama daripada jumlah kolom dalam tabel turunan yang ditentukan oleh argumen spesifikasi kueri dari pernyataan SQL. |
22001 | Data string, pemotongan kanan | Penetapan karakter atau nilai biner ke kolom menghasilkan pemotongan data karakter nonblank atau data biner non-null. |
22002 | Variabel indikator diperlukan tetapi tidak disediakan | Data NULL terikat ke parameter output yang StrLen_or_IndPtr diatur oleh SQLBindParameter adalah penunjuk null. |
22003 | Nilai numerik di luar rentang | *StatementText berisi pernyataan SQL yang berisi parameter numerik terikat atau harfiah, dan nilai menyebabkan seluruh (dibandingkan dengan pecahan) bagian dari angka yang akan dipotong saat ditetapkan ke kolom tabel terkait. Mengembalikan nilai numerik (sebagai numerik atau string) untuk satu atau beberapa parameter input/output atau output akan menyebabkan seluruh (dibandingkan dengan pecahan) bagian dari angka yang akan dipotong. |
22007 | Format tanggalwaktu tidak valid | *StatementText berisi pernyataan SQL yang berisi struktur tanggal, waktu, atau tanda waktu sebagai parameter terikat, dan parameter masing-masing, tanggal, waktu, atau tanda waktu yang tidak valid. Parameter input/output atau output terikat ke struktur C tanggal, waktu, atau tanda waktu, dan nilai dalam parameter yang dikembalikan masing-masing, tanggal, waktu, atau tanda waktu yang tidak valid. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
22008 | Meluapnya bidang tanggalwaktu | *StatementText berisi pernyataan SQL yang berisi ekspresi tanggalwaktu yang, ketika dihitung, menghasilkan struktur tanggal, waktu, atau tanda waktu yang tidak valid. Ekspresi tanggalwaktu yang dihitung untuk parameter input/output atau output menghasilkan struktur C tanggal, waktu, atau tanda waktu yang tidak valid. |
22012 | Pembagian dengan nol | *StatementText berisi pernyataan SQL yang berisi ekspresi aritmatika yang menyebabkan pembagian nol. Ekspresi aritmatika yang dihitung untuk parameter input/output atau output menghasilkan pembagian dengan nol. |
22015 | Meluapnya bidang interval | *StatementText berisi parameter numerik atau interval yang tepat yang, ketika dikonversi ke jenis data SQL interval, menyebabkan hilangnya digit signifikan. *StatementText berisi parameter interval dengan lebih dari satu bidang yang, ketika dikonversi ke jenis data numerik dalam kolom, tidak memiliki representasi dalam jenis data numerik. *StatementText berisi data parameter yang ditetapkan ke jenis SQL interval, dan tidak ada representasi nilai jenis C dalam jenis SQL interval. Menetapkan parameter input/output atau output yang merupakan jenis SQL numerik atau interval yang tepat ke jenis C interval menyebabkan hilangnya digit signifikan. Ketika parameter input/output atau output ditetapkan ke struktur interval C, tidak ada representasi data dalam struktur data interval. |
22018 | Nilai karakter tidak valid untuk spesifikasi cast | *StatementText berisi tipe C yang tepat atau perkiraan numerik, tanggalwaktu, atau tipe data interval; jenis SQL kolom adalah tipe data karakter; dan nilai dalam kolom bukan harfiah yang valid dari jenis C terikat. Ketika parameter input/output atau output dikembalikan, jenis SQL adalah jenis data numerik yang tepat atau perkiraan, tanggalwaktu, atau interval; jenis C SQL_C_CHAR; dan nilai dalam kolom bukan harfiah yang valid dari jenis SQL terikat. |
22019 | Karakter escape tidak valid | *StatementText berisi pernyataan SQL yang berisi predikat LIKE dengan ESCAPE dalam klausul WHERE, dan panjang karakter escape berikut ESCAPE tidak sama dengan 1. |
22025 | Urutan escape tidak valid | *StatementText berisi pernyataan SQL yang berisi "KARAKTER ESCAPE nilai pola LIKE" dalam klausa WHERE, dan karakter yang mengikuti karakter escape dalam nilai pola bukan salah satu dari "%" atau "_". |
23000 | Pelanggaran batasan integritas | *StatementText berisi pernyataan SQL yang berisi parameter atau harfiah. Nilai parameter adalah NULL untuk kolom yang didefinisikan sebagai NOT NULL di kolom tabel terkait, nilai duplikat disediakan untuk kolom yang dibatasi hanya berisi nilai unik, atau beberapa batasan integritas lainnya dilanggar. |
24000 | Status kursor tidak valid | Kursor diposisikan pada StatementHandle oleh SQLFetch atau SQLFetchScroll. Kesalahan ini dikembalikan oleh Driver Manager jika SQLFetch atau SQLFetchScroll belum mengembalikan SQL_NO_DATA, dan dikembalikan oleh driver jika SQLFetch atau SQLFetchScroll telah mengembalikan SQL_NO_DATA. Kursor terbuka tetapi tidak diposisikan pada StatementHandle. *StatementText berisi pernyataan pembaruan atau penghapusan yang diposisikan, dan kursor diposisikan sebelum awal kumpulan hasil atau setelah akhir tataan hasil. |
34000 | Nama kursor tidak valid | *StatementText berisi pernyataan pembaruan atau penghapusan yang diposisikan, dan kursor yang direferensikan oleh pernyataan yang dijalankan tidak terbuka. |
3D000 | Nama katalog tidak valid | Nama katalog yang ditentukan dalam StatementText tidak valid. |
3F000 | Nama skema tidak valid | Nama skema yang ditentukan dalam StatementText tidak valid. |
40001 | Kegagalan serialisasi | Transaksi digulung balik karena kebuntuan sumber daya dengan transaksi lain. |
40003 | Penyelesaian pernyataan tidak diketahui | Koneksi terkait gagal selama eksekusi fungsi ini, dan status transaksi tidak dapat ditentukan. |
42000 | Kesalahan sintaks atau pelanggaran akses | *StatementText berisi pernyataan SQL yang tidak dapat disiapkan atau berisi kesalahan sintaks. Pengguna tidak memiliki izin untuk menjalankan pernyataan SQL yang terkandung dalam *StatementText. |
42S01 | Tabel dasar atau tampilan sudah ada | *StatementText berisi pernyataan CREATE TABLE atau CREATE VIEW , dan nama tabel atau nama tampilan yang ditentukan sudah ada. |
42S02 | Tabel dasar atau tampilan tidak ditemukan | *StatementText berisi pernyataan DROP TABLE atau DROP VIEW , dan nama tabel atau nama tampilan yang ditentukan tidak ada. *StatementText berisi pernyataan ALTER TABLE , dan nama tabel yang ditentukan tidak ada. *StatementText berisi pernyataan CREATE VIEW , dan nama tabel atau nama tampilan yang ditentukan oleh spesifikasi kueri tidak ada. *StatementText berisi pernyataan CREATE INDEX , dan nama tabel yang ditentukan tidak ada. *StatementText berisi pernyataan GRANT atau REVOKE , dan nama tabel atau nama tampilan yang ditentukan tidak ada. *StatementText berisi pernyataan SELECT , dan nama tabel atau nama tampilan tertentu tidak ada. *StatementText berisi pernyataan DELETE, INSERT, atau UPDATE , dan nama tabel yang ditentukan tidak ada. *StatementText berisi pernyataan CREATE TABLE , dan tabel yang ditentukan dalam batasan (mereferensikan tabel selain yang sedang dibuat) tidak ada. *StatementText berisi pernyataan CREATE SCHEMA , dan nama tabel atau nama tampilan tertentu tidak ada. |
42S11 | Indeks sudah ada | *StatementText berisi pernyataan CREATE INDEX , dan nama indeks yang ditentukan sudah ada. *StatementText berisi pernyataan CREATE SCHEMA , dan nama indeks yang ditentukan sudah ada. |
42S12 | Indeks tidak ditemukan | *StatementText berisi pernyataan DROP INDEX , dan nama indeks yang ditentukan tidak ada. |
42S21 | Kolom sudah ada | *StatementText berisi pernyataan ALTER TABLE , dan kolom yang ditentukan dalam klausa ADD tidak unik atau mengidentifikasi kolom yang ada dalam tabel dasar. |
42S22 | Kolom tidak ditemukan | *StatementText berisi pernyataan CREATE INDEX , dan satu atau beberapa nama kolom yang ditentukan dalam daftar kolom tidak ada. *StatementText berisi pernyataan GRANT atau REVOKE , dan nama kolom tertentu tidak ada. *StatementText berisi pernyataan SELECT, DELETE, INSERT, atau UPDATE , dan nama kolom tertentu tidak ada. *StatementText berisi pernyataan CREATE TABLE , dan kolom yang ditentukan dalam batasan (mereferensikan tabel selain yang sedang dibuat) tidak ada. *StatementText berisi pernyataan CREATE SCHEMA , dan nama kolom tertentu tidak ada. |
44000 | DENGAN PELANGGARAN OPSI PEMERIKSAAN | Argumen StatementText berisi pernyataan INSERT yang dilakukan pada tabel yang dilihat atau tabel yang berasal dari tabel yang dilihat yang dibuat dengan menentukan WITH CHECK OPTION, sehingga satu atau beberapa baris yang terpengaruh oleh pernyataan INSERT tidak akan ada lagi dalam tabel yang dilihat. Argumen StatementText berisi pernyataan UPDATE yang dilakukan pada tabel yang dilihat atau tabel yang berasal dari tabel yang dilihat yang dibuat dengan menentukan WITH CHECK OPTION, sehingga satu atau beberapa baris yang terpengaruh oleh pernyataan UPDATE tidak akan ada lagi dalam tabel yang dilihat. |
HY000 | Kesalahan umum | Terjadi kesalahan yang tidak ada SQLSTATE tertentu dan tidak ada SQLSTATE khusus implementasi yang ditentukan. Pesan kesalahan yang dikembalikan oleh SQLGetDiagRec di buffer *MessageText menjelaskan kesalahan dan penyebabnya. |
HY001 | Kesalahan alokasi memori | Driver tidak dapat mengalokasikan memori yang diperlukan untuk mendukung eksekusi atau penyelesaian fungsi. |
HY008 | Operasi dibatalkan | Pemrosesan asinkron diaktifkan untuk StatementHandle. Fungsi ini dipanggil, dan sebelum selesai dieksekusi, SQLCancel atau SQLCancelHandle dipanggil pada StatementHandle. Kemudian fungsi dipanggil lagi pada StatementHandle. Fungsi ini dipanggil, dan sebelum selesai dieksekusi, SQLCancel atau SQLCancelHandle dipanggil pada StatementHandle dari utas yang berbeda dalam aplikasi multithread. |
HY009 | Penggunaan pointer null tidak valid | (DM) *StatementText adalah pointer null. |
HY010 | Kesalahan urutan fungsi | (DM) Fungsi eksekusi asinkron dipanggil untuk handel koneksi yang terkait dengan StatementHandle. Fungsi asinkron ini masih dijalankan ketika fungsi SQLExecDirect dipanggil. (DM) SQLExecute, SQLExecDirect, atau SQLMoreResults dipanggil untuk StatementHandle dan dikembalikan SQL_PARAM_DATA_AVAILABLE. Fungsi ini dipanggil sebelum data diambil untuk semua parameter yang dialirkan. (DM) Fungsi eksekusi asinkron (bukan yang ini) dipanggil untuk StatementHandle dan masih dijalankan ketika fungsi ini dipanggil. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos dipanggil untuk StatementHandle dan dikembalikan SQL_NEED_DATA. Fungsi ini dipanggil sebelum data dikirim untuk semua parameter atau kolom data-at-execution. |
HY013 | Kesalahan manajemen memori | Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah. |
HY090 | String atau panjang buffer tidak valid | (DM) Argumen TextLength kurang dari atau sama dengan 0 tetapi tidak sama dengan SQL_NTS. Nilai parameter, yang diatur dengan SQLBindParameter, adalah pointer null, dan nilai panjang parameter bukan 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM, atau kurang dari atau sama dengan SQL_LEN_DATA_AT_EXEC_OFFSET. Nilai parameter, yang diatur dengan SQLBindParameter, bukan penunjuk null; jenis data C SQL_C_BINARY atau SQL_C_CHAR; dan nilai panjang parameter kurang dari 0 tetapi tidak SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM, atau kurang dari atau sama dengan SQL_LEN_DATA_AT_EXEC_OFFSET. Nilai panjang parameter yang terikat oleh SQLBindParameter diatur ke SQL_DATA_AT_EXEC; jenis SQL SQL_LONGVARCHAR, SQL_LONGVARBINARY, atau jenis data khusus sumber data yang panjang; dan jenis informasi SQL_NEED_LONG_DATA_LEN di SQLGetInfo adalah "Y". |
HY105 | Jenis parameter tidak valid | Nilai yang ditentukan untuk argumen InputOutputType di SQLBindParameter SQL_PARAM_OUTPUT, dan parameternya adalah parameter input. |
HY109 | Posisi kursor tidak valid | *StatementText berisi pernyataan pembaruan atau penghapusan yang diposisikan, dan kursor diposisikan (oleh SQLSetPos atau SQLFetchScroll) pada baris yang telah dihapus atau tidak dapat diambil. |
HY117 | Koneksi ditangguhkan karena status transaksi yang tidak diketahui. Hanya fungsi putuskan sambungan dan baca-saja yang diizinkan. | (DM) Untuk informasi selengkapnya tentang status ditangguhkan, lihat Fungsi SQLEndTran. |
HYC00 | Fitur opsional tidak diimplementasikan | Kombinasi pengaturan saat ini dari atribut pernyataan SQL_ATTR_CONCURRENCY dan SQL_ATTR_CURSOR_TYPE tidak didukung oleh driver atau sumber data. Atribut pernyataan SQL_ATTR_USE_BOOKMARKS diatur ke SQL_UB_VARIABLE, dan atribut pernyataan SQL_ATTR_CURSOR_TYPE diatur ke jenis kursor yang drivernya tidak mendukung marka buku. |
HYT00 | Waktu habis kedaluwarsa | Periode batas waktu kueri kedaluwarsa sebelum sumber data mengembalikan tataan hasil. Periode batas waktu diatur melalui SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
HYT01 | Kesalahan waktu habis koneksi kedaluwarsa | Periode batas waktu koneksi kedaluwarsa sebelum sumber data merespons permintaan. Periode batas waktu koneksi diatur melalui SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Driver tidak mendukung fungsi ini | (DM) Driver yang terkait dengan StatementHandle tidak mendukung fungsi. |
IM017 | Polling dinonaktifkan dalam mode pemberitahuan asinkron | Setiap kali model pemberitahuan digunakan, polling dinonaktifkan. |
IM018 | SQLCompleteAsync belum dipanggil untuk menyelesaikan operasi asinkron sebelumnya pada handel ini. | Jika panggilan fungsi sebelumnya pada handel mengembalikan SQL_STILL_EXECUTING dan jika mode pemberitahuan diaktifkan, SQLCompleteAsync harus dipanggil pada handel untuk melakukan pasca-pemrosesan dan menyelesaikan operasi. |
Komentar
Aplikasi memanggil SQLExecDirect untuk mengirim pernyataan SQL ke sumber data. Untuk informasi selengkapnya tentang eksekusi langsung, lihat Eksekusi Langsung. Driver memodifikasi pernyataan untuk menggunakan bentuk SQL yang digunakan oleh sumber data lalu mengirimkannya ke sumber data. Secara khusus, driver memodifikasi urutan escape yang digunakan untuk menentukan fitur tertentu di SQL. Untuk sintaks urutan escape, lihat Urutan Escape di ODBC.
Aplikasi dapat menyertakan satu atau beberapa penanda parameter dalam pernyataan SQL. Untuk menyertakan penanda parameter, aplikasi menyematkan tanda tanya (?) ke dalam pernyataan SQL pada posisi yang sesuai. Untuk informasi tentang parameter, lihat Parameter Pernyataan.
Jika pernyataan SQL adalah pernyataan SELECT dan jika aplikasi bernama SQLSetCursorName untuk mengaitkan kursor dengan pernyataan, maka driver menggunakan kursor yang ditentukan. Jika tidak, driver akan menghasilkan nama kursor.
Jika sumber data dalam mode penerapan manual (memerlukan inisiasi transaksi eksplisit) dan transaksi belum dimulai, driver memulai transaksi sebelum mengirim pernyataan SQL. Untuk informasi selengkapnya, lihat Mode Penerapan Manual.
Jika aplikasi menggunakan SQLExecDirect untuk mengirimkan pernyataan COMMIT atau ROLLBACK , itu tidak akan dapat dioperasikan antara produk DBMS. Untuk menerapkan atau mengembalikan transaksi, aplikasi memanggil SQLEndTran.
Jika SQLExecDirect menemukan parameter data-at-execution, SQLExecDirect mengembalikan SQL_NEED_DATA. Aplikasi mengirimkan data menggunakan SQLParamData dan SQLPutData. Lihat SQLBindParameter, SQLParamData, SQLPutData, dan Mengirim Data Panjang.
Jika SQLExecDirect menjalankan pernyataan pembaruan, sisipkan, atau hapus yang dicari yang tidak memengaruhi baris apa pun di sumber data, panggilan ke SQLExecDirect akan mengembalikan SQL_NO_DATA.
Jika nilai atribut pernyataan SQL_ATTR_PARAMSET_SIZE lebih besar dari 1 dan pernyataan SQL berisi setidaknya satu penanda parameter, SQLExecDirect akan menjalankan pernyataan SQL sekali untuk setiap set nilai parameter dari array yang diarahkan oleh argumen ParameterValuePointer dalam panggilan ke SQLBindParameter. Untuk informasi selengkapnya, lihat Array Nilai Parameter.
Jika marka buku diaktifkan dan kueri dijalankan yang tidak dapat mendukung marka buku, driver harus mencoba memaksa lingkungan ke yang mendukung marka buku dengan mengubah nilai atribut dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah). Jika atribut tidak dapat diubah, driver harus mengembalikan SQLSTATE HY024 (nilai atribut tidak valid).
Catatan
Saat menggunakan pengumpulan koneksi, aplikasi tidak boleh menjalankan pernyataan SQL yang mengubah database atau konteks database, seperti pernyataan database USE di SQL Server, yang mengubah katalog yang digunakan oleh sumber data.
Contoh Kode
Lihat Program SQLBindCol, SQLGetData, dan Sampel ODBC.
Fungsi Terkait
Untuk informasi tentang | Lihat |
---|---|
Mengikat buffer ke kolom dalam tataan hasil | Fungsi SQLBindCol |
Membatalkan pemrosesan pernyataan | Fungsi SQLCancel |
Menjalankan operasi penerapan atau pembatalan | Fungsi SQLEndtran |
Menjalankan pernyataan SQL yang disiapkan | Fungsi SQLExecute |
Mengambil beberapa baris data | Fungsi SQLFetch |
Mengambil blok data atau menggulir melalui kumpulan hasil | Fungsi SQLFetchScroll |
Mengembalikan nama kursor | Fungsi SQLGetCursorName |
Mengambil bagian atau semua kolom data | Fungsi SQLGetData |
Mengembalikan parameter berikutnya untuk mengirim data | Fungsi SQLParamData |
Menyiapkan pernyataan untuk eksekusi | Fungsi SQLPrepare |
Mengirim data parameter pada waktu eksekusi | Fungsi SQLPutData |
Mengatur nama kursor | Fungsi SQLSetCursorName |
Mengatur atribut pernyataan | Fungsi SQLSetStmtAttr |