Rumah >pangkalan data >tutorial mysql >Mengapa INSERT PUKAL Tidak Menerima Laluan Fail Berubah dalam Prosedur Tersimpan?

Mengapa INSERT PUKAL Tidak Menerima Laluan Fail Berubah dalam Prosedur Tersimpan?

Susan Sarandon
Susan Sarandonasal
2024-12-26 22:47:09302semak imbas

Why Doesn't BULK INSERT Accept Variable File Paths in Stored Procedures?

Sisip Pukal Menggunakan Prosedur Tersimpan: Penyelesaian Masalah

Dalam percubaan untuk memasukkan data secara pukal menggunakan prosedur tersimpan, pembangun menghadapi ralat sintaks. Matlamatnya adalah untuk meniru pertanyaan INSERT PUKAL yang berfungsi ke dalam prosedur. Berikut ialah analisis masalah dan penyelesaiannya.

Isu timbul daripada percubaan untuk menghantar nama fail sebagai pembolehubah kepada arahan INSERT PUKAL dalam prosedur yang disimpan. Malangnya, ini ialah operasi yang tidak disokong oleh BULK INSERT.

Berikut ialah contoh percubaan yang tidak berjaya menggunakan pembolehubah:

DECLARE @filename VARCHAR(255)
SET @filename = 'e:-digit Commercial.csv'

BULK INSERT ZIPCodes
FROM @filename
WITH

Sebaliknya, arahan BULK INSERT mengharapkan laluan fail berkod keras . Untuk mengatasi had ini, pertimbangkan untuk membina pernyataan BULK INSERT sebagai rentetan dengan nama fail tetap dan melaksanakannya sebagai SQL dinamik.

DECLARE @filepath NVARCHAR(500)
SET @filepath = N'e:-digit Commercial.csv'

DECLARE @bulkinsert NVARCHAR(2000)

SET @bulkinsert =
       N'BULK INSERT ZIPCodes FROM ''' +
       @filepath +
       N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'

EXEC sp_executesql @bulkinsert

Dengan menggunakan SQL dinamik, pernyataan yang dibina boleh dilaksanakan, menyelesaikan ralat sintaks yang dihadapi dalam pelaksanaan prosedur tersimpan asal.

Atas ialah kandungan terperinci Mengapa INSERT PUKAL Tidak Menerima Laluan Fail Berubah dalam Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn