【发布时间】:2019-05-16 16:33:34
【问题描述】:
我正在做一个程序,它接受文件路径的输入参数,从中读取 json 数据并将数据插入到表中。但是,当我尝试执行该过程时,出现此错误:
消息 201,级别 16,状态 4,过程 main.loadData,第 0 行 [批处理开始行 244]
过程或函数“loadData”需要参数“@filePath”,但未提供。
令人惊讶的是,我正在添加一个参数..
程序的代码是这样的:
ALTER PROCEDURE main.loadData
(@filePath VARCHAR(200))
AS
BEGIN
DECLARE @pathScript AS VARCHAR(MAX)
SET @pathScript='DECLARE @jsonVariable NVARCHAR(max);
SELECT @jsonVariable = BulkColumn
FROM OPENROWSET (BULK ''' + @filepath
+ ''', SINGLE_CLOB) as j;
INSERT INTO main.jsonData(restaurant, priceRange, country, score, reviewDate)
SELECT *
FROM OPENJSON(@jsonVariable, ''$.reviews.row'')
WITH
(restaurant VARCHAR(100) ''$.restaurant'',
priceRange VARCHAR(50) ''$.priceRange'',
country VARCHAR(50) ''$.country'',
score INTEGER ''$.score'',
reviewDate DATETIME ''$.reviewDate''
);';
EXEC(@pathScript);
END;
GO
而执行代码是这样的:
EXEC main.loadData 'C:\data.json';
【问题讨论】:
-
你使用的是哪个数据库?
-
@AdnanSharif Microsoft SQL Server 管理工作室
-
试试 EXEC main.loadData @filePath = 'C:\data.json';
-
@Brad 同样的错误。
-
@jms15 我不知道你面临的是哪种情况。但是上面的格式似乎还可以。这是working fiddle。
标签: sql-server file stored-procedures parameters