首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL存储过程和标识符

问MySQL存储过程和标识符
EN

Stack Overflow用户
提问于 2016-01-19 04:01:08
回答 1查看 304关注 0票数 0

我正在学习编写MySQL存储过程,并且遇到了一些困难。这里有两个存储过程:

第一个存储过程:

代码语言:javascript
复制
CREATE PROCEDURE sp1 (IN `username` TEXT, OUT `user_id` INT)
BEGIN
    DECLARE rowcount INT;

    SELECT count(`User ID`) INTO rowcount FROM user WHERE `Username`=username;

    SET user_id = rowcount;
END|

第二个存储过程:

代码语言:javascript
复制
CREATE PROCEDURE sp2 (IN `doc_id` INT, IN `content` LONGTEXT)
BEGIN
    UPDATE doc SET `Content`=content WHERE `Doc ID`=doc_id;
END|

(定界符为|.)

问题:

我观察到,第一个存储过程的结果与调用SELECT count(`User ID`) FROM user;相同。但是,第二个存储过程完成它的工作,并获得使用新内容更新的内容。

那么,为什么第一个存储过程将`Username`和username视为相同的标识符,而第二个存储过程则将`Content`和content视为不同的标识符?这两种情况下的两个标识符都是相同的,但第一个字母的大写除外。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 06:38:02

在阅读了关于MySQL的官方局部变量的范围文档之后,我就明白了这一点。

它指出:

局部变量不应具有与表列相同的名称。如果SQL语句,如SELECT .INTO语句中,包含对列的引用和声明的具有相同名称的局部变量,MySQL当前将引用解释为变量的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34868294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档