Sisipkan Data Pukal menggunakan Prosedur Tersimpan
Anda telah membuat pertanyaan yang berjaya melaksanakan tugas sisipan pukal. Walau bagaimanapun, anda kini ingin merangkum pertanyaan ini dalam prosedur tersimpan untuk meningkatkan kebolehgunaan semula. Malangnya, anda telah mengalami ralat sintaks semasa cuba berbuat demikian.
Inti isu terletak pada ketidakupayaan perintah INSERT PUKAL untuk menerima nama fail sebagai pembolehubah. Walaupun kod anda kelihatan betul dari segi sintaksis, coretan kod berikut akan gagal:
DECLARE @filename VARCHAR(255) SET @filename = 'e:-digit Commercial.csv' BULK INSERT ZIPCodes FROM @filename WITH
Oleh itu, tidak mungkin untuk menghantar nama fail sebagai pembolehubah kepada penyata INSERT PUKAL. Sebaliknya, anda boleh membina kenyataan INSERT PUKAL secara dinamik sebagai rentetan dan melaksanakannya menggunakan SQL dinamik. Berikut ialah contoh:
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
Kod ini memberikan laluan fail kepada pembolehubah @filepath. Ia kemudian membina pernyataan INSERT PUKAL sebagai rentetan dan menyimpannya dalam pembolehubah @bulkinsert. Akhirnya, prosedur SQL dinamik sp_executesql digunakan untuk melaksanakan pernyataan yang dibina. Pendekatan ini membolehkan anda membuat parameter laluan fail dan melaksanakan pernyataan INSERT PUKAL dalam prosedur tersimpan dengan berkesan.
Atas ialah kandungan terperinci Bagaimana Menggunakan Pembolehubah dengan INSERT PUKAL dalam Prosedur Tersimpan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!