Mysql语法错误

发布于 2024-10-30 07:57:42 字数 1204 浏览 7 评论 0原文

运行存储过程时出现语法错误,我在 +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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

戒ㄋ 2024-11-06 07:57:42

我立刻就看到两个问题:

ROW_NUMBER() 超过 (...)

MySQL 不支持窗口函数

[ID]

方括号在 MySQL 中引用对象名称是非法的(实际上在除 SQL Server 之外的所有数据库中)

I can see two problems right away:

ROW_NUMBER() OVER (...)

MySQL does not support windowing functions

[Id]

Square brackets are illegal for quoting object names in MySQL (actually in all databases except SQL Server)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文