Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Masalah Sisipan Pukal Ralat Prosedur Tersimpan Apabila Menggunakan Laluan Fail Boleh Ubah?
Semasa cuba mencipta prosedur tersimpan untuk memasukkan data pukal menggunakan arahan INSERT PUKAL, anda mungkin menghadapi ralat. Satu ralat sedemikian berlaku apabila cuba menetapkan pembolehubah laluan fail kepada parameter nama fail dalam prosedur yang disimpan.
Dalam pertanyaan INSERT PUKAL biasa, menentukan laluan fail sebagai rentetan berfungsi dengan betul:
BULK INSERT ZIPCodes FROM 'e:-digit Commercial.csv' WITH ( FIRSTROW = 2 , FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' )
Walau bagaimanapun, apabila cuba mencipta prosedur tersimpan dengan laluan fail berubah-ubah, anda mungkin menghadapi ralat:
create proc dbo.InsertZipCode @filepath varchar(500)='e:-digit Commercial.csv' as begin BULK INSERT ZIPCodes FROM @filepath WITH ( FIRSTROW = 2 , FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ) end
Sintaks salah berhampiran '@filepath' dan 'with'
Ralat ini berlaku kerana arahan BULK INSERT tidak menyokong laluan fail sebagai pembolehubah. Untuk menyelesaikan isu ini, anda boleh sama ada:
Menggunakan Dynamic SQL untuk Membina INSERT PUKAL Kenyataan
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
Pendekatan ini membolehkan anda mengekalkan fleksibiliti menggunakan laluan fail yang berbeza sambil memanfaatkan prosedur tersimpan untuk sisipan pukal.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Masalah Sisipan Pukal Ralat Prosedur Tersimpan Apabila Menggunakan Laluan Fail Boleh Ubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!