ホームページ > データベース > mysql チュートリアル > SQL Server 一括挿入ストアド プロシージャの「'@filepath' 付近の構文が正しくありません」エラーを修正する方法

SQL Server 一括挿入ストアド プロシージャの「'@filepath' 付近の構文が正しくありません」エラーを修正する方法

Susan Sarandon
リリース: 2024-12-29 04:10:13
オリジナル
469 人が閲覧しました

How to Fix

ストアド プロシージャによる一括挿入: エラーの解決

作業中の一括挿入クエリをストアド プロシージャにカプセル化しようとすると、ユーザーが次のエラーに遭遇しました。 BULK INSERT ステートメント内でファイル変数を使用するときにエラーが発生します。ユーザーのストアド プロシージャ コードは次のようになります:

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
ログイン後にコピー

ただし、このコードでは次のエラーが発生しました:

Msg 102, Level 15, State 1, Procedure
InsertZipCode, Line 6 Incorrect syntax
near '@filepath'.

Msg 319, Level 15, State 1, Procedure
InsertZipCode, Line 7 Incorrect syntax
near the keyword 'with'. If this
statement is a common table
expression, an xmlnamespaces clause or
a change tracking context clause, the
previous statement must be terminated
with a semicolon.
ログイン後にコピー

この問題の核心は、BULK INSERT が実行できないことにあります。ファイル名を変数として受け入れます。次のようなステートメントは有効ですが、

BULK INSERT ZIPCodes 
FROM  'e:-digit Commercial.csv' 
WITH 
ログイン後にコピー

BULK 内でファイル名変数 (例: DECLARE @filename VARCHAR(255) SET @filename = 'e:5-digit Commercial.csv') を使用します。 INSERT ステートメントは必然的に失敗します。

この問題を解決するには、実行可能なアプローチの 1 つは、BULK INSERT ステートメントを構築することです。文字列 (固定ファイル名) として指定し、sp_executesql:

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
ログイン後にコピー

を使用して動的に実行します。これらのガイドラインに従うことで、BULK INSERT がファイル名変数を受け入れることができない問題を回避し、正常に実行できるようになります。一括挿入を実行するストアド プロシージャの作成。

以上がSQL Server 一括挿入ストアド プロシージャの「'@filepath' 付近の構文が正しくありません」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート