Mysql语法错误
运行存储过程时出现语法错误,我在 +v_RowIndex+' And ('+v_RowIndex+' + '+v_NoOfRows+')'; 附近得到它
谁能帮助我吗?
DELIMITER //; //
CREATE PROCEDURE GetProducts(v_WhereClause NATIONAL VARCHAR(4000),
v_SortExpression NATIONAL VARCHAR(128),
v_RowIndex INT,
v_NoOfRows INT)
BEGIN
DECLARE v_SQL NATIONAL VARCHAR(4000);
IF (v_WhereClause != '') then
SET v_WhereClause = CONCAT('WHERE ',char(13),v_WhereClause);
end if;
IF (v_SortExpression != '') then
SET v_SortExpression = CONCAT('ORDER BY ',v_SortExpression);
end if;
SET v_SQL = CONCAT('SQLWAYS_EVAL# AS (
SELECT ROW_NUMBER() OVER (',v_SortExpression,
'SQLWAYS_EVAL#
[Id],
[Name],
[Description],
[Unit],
[UnitPrice],
[CreateDate]
FROM
[Product]
',v_WhereClause,'SQLWAYS_EVAL#
Row between ')+v_RowIndex+' And ('+v_RowIndex+' + '+v_NoOfRows+')';
SET @SWV_Stmt = v_SQL;
PREPARE SWT_Stmt FROM @SWV_Stmt;
EXECUTE SWT_Stmt;
DEALLOCATE PREPARE SWT_Stmt;
SET v_SQL = CONCAT('SELECT COUNT(Id)
FROM
Product ',v_WhereClause);
SET @SWV_Stmt = v_SQL;
PREPARE SWT_Stmt FROM @SWV_Stmt;
EXECUTE SWT_Stmt;
DEALLOCATE PREPARE SWT_Stmt;
END;
//
I have a syntax error when running the stored procedure, i get it near the +v_RowIndex+' And ('+v_RowIndex+' + '+v_NoOfRows+')';
Can anyone help me?
DELIMITER //; //
CREATE PROCEDURE GetProducts(v_WhereClause NATIONAL VARCHAR(4000),
v_SortExpression NATIONAL VARCHAR(128),
v_RowIndex INT,
v_NoOfRows INT)
BEGIN
DECLARE v_SQL NATIONAL VARCHAR(4000);
IF (v_WhereClause != '') then
SET v_WhereClause = CONCAT('WHERE ',char(13),v_WhereClause);
end if;
IF (v_SortExpression != '') then
SET v_SortExpression = CONCAT('ORDER BY ',v_SortExpression);
end if;
SET v_SQL = CONCAT('SQLWAYS_EVAL# AS (
SELECT ROW_NUMBER() OVER (',v_SortExpression,
'SQLWAYS_EVAL#
[Id],
[Name],
[Description],
[Unit],
[UnitPrice],
[CreateDate]
FROM
[Product]
',v_WhereClause,'SQLWAYS_EVAL#
Row between ')+v_RowIndex+' And ('+v_RowIndex+' + '+v_NoOfRows+')';
SET @SWV_Stmt = v_SQL;
PREPARE SWT_Stmt FROM @SWV_Stmt;
EXECUTE SWT_Stmt;
DEALLOCATE PREPARE SWT_Stmt;
SET v_SQL = CONCAT('SELECT COUNT(Id)
FROM
Product ',v_WhereClause);
SET @SWV_Stmt = v_SQL;
PREPARE SWT_Stmt FROM @SWV_Stmt;
EXECUTE SWT_Stmt;
DEALLOCATE PREPARE SWT_Stmt;
END;
//
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我立刻就看到两个问题:
MySQL 不支持窗口函数
方括号在 MySQL 中引用对象名称是非法的(实际上在除 SQL Server 之外的所有数据库中)
I can see two problems right away:
MySQL does not support windowing functions
Square brackets are illegal for quoting object names in MySQL (actually in all databases except SQL Server)