Bagikan melalui


sp_OAMethod (T-SQL)

Berlaku untuk:SQL Server

Memanggil metode objek OLE.

Konvensi sintaks transact-SQL

Sintaks

sp_OAMethod objecttoken , methodname
    [ , returnvalue OUTPUT ]
    [ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]
[ ; ]

Argumen

Penting

Argumen untuk prosedur tersimpan yang diperluas harus dimasukkan dalam urutan tertentu seperti yang dijelaskan di bagian Sintaks. Jika parameter dimasukkan di luar urutan, pesan kesalahan terjadi.

objecttoken

Token objek objek OLE yang sebelumnya dibuat dengan menggunakan sp_OACreate.

methodname

Nama metode objek OLE untuk dipanggil.

OUTPUT returnvalue

Nilai pengembalian metode objek OLE. Jika ditentukan, variabel harus berupa variabel lokal dari jenis data yang sesuai.

Jika metode mengembalikan satu nilai, baik:

  • tentukan variabel lokal untuk returnvalue, yang mengembalikan nilai pengembalian metode dalam variabel lokal; atau
  • jangan tentukan returnvalue, yang mengembalikan nilai pengembalian metode ke klien sebagai kumpulan hasil satu kolom dan baris tunggal.

Jika nilai pengembalian metode adalah objek OLE, nilai kembali harus merupakan variabel lokal dari int tipe data. Token objek disimpan dalam variabel lokal, dan token objek ini dapat digunakan dengan prosedur tersimpan OLE Automation lainnya.

Ketika nilai pengembalian metode adalah array, jika returnvalue ditentukan, metode akan diatur ke NULL.

Kesalahan dimunculkan ketika salah satu hal berikut ini terjadi:

  • returnvalue ditentukan, tetapi metode tidak mengembalikan nilai.
  • Metode mengembalikan array dengan lebih dari dua dimensi.
  • Metode mengembalikan array sebagai parameter output.

[ @parametername = ] parameter [ OUTPUT ]

Parameter metode. Jika ditentukan, parameter harus merupakan nilai dari jenis data yang sesuai.

Untuk mendapatkan nilai pengembalian parameter output, parameter harus berupa variabel lokal dari jenis data yang sesuai, dan OUTPUT harus ditentukan. Jika parameter konstanta ditentukan, atau jika OUTPUT tidak ditentukan, nilai pengembalian apa pun dari parameter output diabaikan.

Jika ditentukan, nama parameter haruslah nama parameter bernama Microsoft Visual Basic. @parametername bukan variabel lokal Transact-SQL. Tanda saat (@) dihapus, dan nama parameter diteruskan ke objek OLE sebagai nama parameter. Semua parameter bernama harus ditentukan setelah semua parameter posisi ditentukan.

n

Tempat penampung yang menunjukkan bahwa beberapa parameter dapat ditentukan.

Catatan

@parametername dapat menjadi parameter bernama karena merupakan bagian dari metode yang ditentukan dan diteruskan ke objek. Parameter lain untuk prosedur tersimpan ini ditentukan berdasarkan posisi, bukan nama.

Mengembalikan nilai kode

0 (berhasil) atau angka bukan nol (kegagalan) yang merupakan nilai bilangan bulat HRESULT yang dikembalikan oleh objek OLE Automation.

Untuk informasi selengkapnya tentang kode pengembalian HRESULT, otomatisasi OLE mengembalikan kode dan informasi kesalahan.

Tataan hasil

Jika nilai pengembalian metode adalah array dengan satu atau dua dimensi, array dikembalikan ke klien sebagai kumpulan hasil:

  • Array satu dimensi dikembalikan ke klien sebagai hasil baris tunggal yang diatur dengan kolom sebanyak ada elemen dalam array. Dengan kata lain, array dikembalikan sebagai (kolom).

  • Array dua dimensi dikembalikan ke klien sebagai hasil yang ditetapkan dengan kolom sebanyak ada elemen dalam dimensi pertama array dan dengan baris sebanyak ada elemen dalam dimensi kedua array. Dengan kata lain, array dikembalikan sebagai (kolom, baris).

Saat properti mengembalikan nilai atau nilai pengembalian metode adalah array, sp_OAGetProperty atau sp_OAMethod mengembalikan hasil yang diatur ke klien. (Parameter output metode tidak boleh array.) Prosedur ini memindai semua nilai data dalam array untuk menentukan jenis data dan panjang data SQL Server yang sesuai untuk digunakan untuk setiap kolom dalam tataan hasil. Untuk kolom tertentu, prosedur ini menggunakan jenis dan panjang data yang diperlukan untuk mewakili semua nilai data di kolom tersebut.

Saat semua nilai data dalam kolom memiliki tipe data yang sama, tipe data tersebut digunakan untuk seluruh kolom. Saat nilai data dalam kolom memiliki tipe data yang berbeda, tipe data dari seluruh kolom dipilih berdasarkan bagan berikut.

int (integer) mengapung uang Tanggal dan waktu varchar nvarchar
Int Int mengapung uang varchar varchar nvarchar
mengapung mengapung mengapung uang varchar varchar nvarchar
uang uang uang uang varchar varchar nvarchar
tanggalwaktu varchar varchar varchar tanggalwaktu varchar nvarchar
varchar varchar varchar varchar varchar varchar nvarchar
nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar

Keterangan

Anda juga dapat menggunakan sp_OAMethod untuk mendapatkan nilai properti.

Izin

Memerlukan keanggotaan dalam peran server tetap sysadmin atau menjalankan izin langsung pada prosedur tersimpan ini. Opsi konfigurasi server Prosedur Ole Automation harus diaktifkan untuk menggunakan prosedur sistem apa pun yang terkait dengan OLE Automation.

Contoh

J. Memanggil metode

Contoh berikut memanggil Connect metode objek SQLServer yang dibuat sebelumnya. Ganti <password> dengan kata sandi yang kuat.

EXECUTE
    @hr = sp_OAMethod
    @object,
    'Connect',
    NULL,
    'my_server',
    'my_login',
    '<password>';

IF @hr <> 0
BEGIN
    EXECUTE sp_OAGetErrorInfo @object;
    RETURN;
END

B. Mendapatkan properti

Contoh berikut mendapatkan HostName properti (dari objek yang dibuat SQLServer sebelumnya) dan menyimpannya dalam variabel lokal.

DECLARE @property AS VARCHAR (255);

EXECUTE
    @hr = sp_OAMethod
    @object, 'HostName',
    @property OUTPUT;

IF @hr <> 0
BEGIN
    EXECUTE sp_OAGetErrorInfo @object;
    RETURN;
END

PRINT @property;