Gunakan kueri berparameter - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan kueri berparameter

Anda dapat menggunakan kueri berparameter Athena untuk menjalankan kembali kueri yang sama dengan nilai parameter yang berbeda pada waktu eksekusi dan membantu mencegah serangan injeksi. SQL Di Athena, kueri berparameter dapat berbentuk parameter eksekusi dalam kueri atau DML pernyataan yang disiapkan. SQL

  • Kueri dengan parameter eksekusi dapat dilakukan dalam satu langkah dan tidak spesifik kelompok kerja. Anda menempatkan tanda tanya dalam DML kueri apa pun untuk nilai yang ingin Anda parameterisasi. Saat Anda menjalankan kueri, Anda mendeklarasikan nilai parameter eksekusi secara berurutan. Deklarasi parameter dan penetapan nilai untuk parameter dapat dilakukan dalam kueri yang sama, tetapi dengan cara dipisahkan. Tidak seperti pernyataan yang disiapkan, Anda dapat memilih workgroup saat Anda mengirimkan kueri dengan parameter eksekusi.

  • Pernyataan yang disiapkan membutuhkan dua SQL pernyataan terpisah: PREPARE danEXECUTE. Pertama, Anda menentukan parameter dalam PREPARE pernyataan. Kemudian, Anda menjalankan EXECUTE pernyataan yang memasok nilai untuk parameter yang Anda tentukan. Pernyataan yang disiapkan adalah spesifik kelompok kerja; Anda tidak dapat menjalankannya di luar konteks kelompok kerja tempat mereka berada.

Pertimbangan dan batasan

  • Kueri parameter didukung di mesin Athena versi 2 dan versi yang lebih baru. Untuk informasi selengkapnya tentang versi mesin Aurora, lihat Versi mesin Athena.

  • Saat ini, kueri parameter hanya didukung untuk pernyataan SELECT, INSERT INTO, CTAS, dan UNLOAD.

  • Dalam kueri berparameter, parameter bersifat posisional dan dilambangkan dengan. ? Parameter diberikan nilai berdasarkan urutannya dalam kueri. Parameter bernama tidak didukung.

  • Saat ini, ? parameter hanya dapat ditempatkan di WHERE klausa. Sintaks seperti SELECT ? FROM table tidak didukung.

  • Parameter tanda tanya tidak dapat ditempatkan dalam tanda kutip ganda atau tunggal (yaitu, '?' dan "?" bukan sintaks yang valid).

  • Agar parameter SQL eksekusi diperlakukan sebagai string, mereka harus diapit dalam tanda kutip tunggal daripada tanda kutip ganda.

  • Jika perlu, Anda dapat menggunakan CAST fungsi saat memasukkan nilai untuk istilah parameter. Misalnya, jika Anda memiliki kolom date tipe yang telah Anda parameterisasi dalam kueri dan Anda ingin menanyakan tanggal tersebut2014-07-05, memasukkan CAST('2014-07-05' AS DATE) nilai parameter akan mengembalikan hasilnya.

  • Pernyataan yang disiapkan adalah kelompok kerja khusus, dan nama pernyataan yang disiapkan harus unik dalam kelompok kerja.

  • IAMizin untuk pernyataan yang disiapkan diperlukan. Untuk informasi selengkapnya, lihat Izinkan akses ke pernyataan yang disiapkan.

  • Kueri dengan parameter eksekusi di konsol Athena dibatasi hingga maksimum 25 tanda tanya.