靠近'的MySQL SQL语法错误;0';在1号线
我尝试了各种修改,使这项工作,但我似乎无法消除错误。我的SQLQuery字符串比下面的字符串大很多,但设置相同。我尝试使用靠近'的MySQL SQL语法错误;0';在1号线,mysql,string,stored-procedures,where-clause,concat,Mysql,String,Stored Procedures,Where Clause,Concat,我尝试了各种修改,使这项工作,但我似乎无法消除错误。我的SQLQuery字符串比下面的字符串大很多,但设置相同。我尝试使用CONCAT(“”)语句,但出现了问题。所以我尝试使用这种格式,但仍然收到相同的错误。有什么建议吗 CREATE DEFINER=`root`@`%` PROCEDURE `stp_Select_GetTbl`(IN strWhereClause VARCHAR(255)) BEGIN DECLARE SQLQuery varchar(1000); SET SQLQue
CONCAT(“”)
语句,但出现了问题。所以我尝试使用这种格式,但仍然收到相同的错误。有什么建议吗
CREATE DEFINER=`root`@`%` PROCEDURE `stp_Select_GetTbl`(IN strWhereClause
VARCHAR(255))
BEGIN
DECLARE SQLQuery varchar(1000);
SET SQLQuery = '
SELECT `Part Num` AS `PPNumber`,
`Shop Num` as `SOrder`
FROM `track`.`s list` WHERE ';
SET @SQLQuery = @SQLQuery + strWhereClause + '';
PREPARE stmt FROM @SQLQuery;
EXECUTE stmt;
END
错误:
`Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0' at line 1
`
我已尝试不声明SQLQuery。。。正在更改varchar大小。。。重新组织,甚至使用下面的示例
SET @getList =
CONCAT('SELECT (t1, t2, t3) FROM (SELECT t1, t2, t3) as mainSelect WHERE ', strWhereClause, '');
PREPARE stmt FROM @getList;
EXECUTE stmt;
END
但是在
。。。。在“0”附近使用正确语法的MySQL服务器版本
我需要为SELECT语句定义一个字符串,因为我在存储过程中创建了WHERE子句。1st-不要在与表或列名关联的名称中使用空格,因为这样会导致各种问题。第二,您能显示它试图执行的完整SQL吗?(即,'strWhereClause'值是多少)之所以有空格,是因为最初的开发人员有原始名称的空格等。我也不能显示完整的SQL语句,因为它是机密的。然而,这些较小的版本应该仍然可以工作,但它们不能。我将修改我的示例以删除AS
部分的空格。然而,对于一个较小的版本,这应该足够了,但我仍然有问题。WHERE子句示例类似于SOrder='11222'
@NigelRen“之所以有空格,是因为最初的开发人员在原始名称中有空格”这是创建视图而不是访问表的众多原因之一。原始代码是一个视图,但我将其移动到一个没有视图的存储过程,然后我们将转换为SQL server。所以现在我必须尝试使用这个设置。我以前使用过CONCAT字符串,它工作正常,所以我不确定这为什么会导致我出现@chriscaviness问题。您还应该测试strwhere子句是否为空或null,否则您的准备将失败。