使用DECLARE for MySQL LOAD DATA语句
我正在尝试从.Net应用程序运行此查询使用DECLARE for MySQL LOAD DATA语句,mysql,stored-procedures,Mysql,Stored Procedures,我正在尝试从.Net应用程序运行此查询 LOAD DATA LOCAL INFILE 'testsFile.txt' INTO TABLE Test FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (idTest, SampleID, Analyst, @Analysed, Device, Comments, @TotalRUL, @RUL
LOAD DATA LOCAL INFILE 'testsFile.txt'
INTO TABLE Test
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(idTest, SampleID, Analyst, @Analysed, Device, Comments, @TotalRUL, @RULOne, @RULTwo, @RULThree, @RULFour, Uploaded)
SET
Analysed = nullif(@Analysed,''),
TotalRUL = nullif(@TotalRUL,''),
RULOne = nullif(@RULOne,''),
RULTwo = nullif(@RULTwo,''),
RULThree = nullif(@RULThree,''),
RULFour = nullif(@RULFour,'')
当我从MySQL Workbench运行该查询时,一切正常,但当我使用.net应用程序运行该查询时,出现以下异常:
必须定义参数'@analysisd'
我认为我不能在存储过程之外使用declare语句,而且由于使用LOAD DATA语句,我也不能使用存储过程
怎么办?这是将死吗?你当然不能。如果您的查询使用Workbench,这听起来像是一个.net错误。 我建议您尝试“愚蠢”的解决方案,比如使用反勾号(在@和分析后…抱歉,堆栈溢出自动格式化不允许我向您说明我的意思)或更改变量的名称。 似乎有答案
我需要将“允许用户变量”添加到连接字符串中感谢您的提示,我认为我的.Net程序将以@开头的变量视为参数。由于我没有使用任何,这导致了错误。我尝试过用倒勾来包围变量,比如
@analysisted
,我不知道我是否能够表达我的意思,而stackoverflow格式也没有帮助。start backtick应该介于@和A之间。这样MySQL就可以理解它是一个会话变量。如果不是,则将其视为局部变量。也许已经很清楚了,但我不确定……我想我知道你在说什么