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!