gpt4 book ai didi

MySQL : When stored procedure parameter name is the same as table column name

转载 作者:行者123 更新时间:2023-11-29 22:22:36 28 4
gpt4 key购买 nike

假设有一个存储过程SetCustomerName,它有一个输入参数Name,并且我有一个包含Name 列的表customers。因此,在我的存储过程中,我想设置客户的姓名。如果我写

UPDATE customers SET Name = Name;

这是不正确的,我看到了其他两种方法:

UPDATE customers SET Name = `Name`;
UPDATE customers SET customers.Name = Name;

第一个有效,但我在文档中没有找到可以将参数包装在 ` 字符内的信息。或者我在文档中错过了它(在这种情况下,链接值得赞赏)。

还有哪些其他方法以及这种情况的标准方法是什么?重命名输入参数对我来说不好(因为我有自动对象关系映射,如果你知道我的意思的话)。

更新:

因此,有一个关于反引号( http://dev.mysql.com/doc/refman/5.0/en/identifiers.html )的链接,但没有足够深入地解释如何使用它们(如何将它们与参数和列名一起使用)。

还有一件非常奇怪的事情(至少对我来说):你可以使用反引号:

UPDATE customers SET Name = `Name`;
//or
UPDATE customers SET `Name` = Name;
//or even
UPDATE customers SET `Name` = `Name`;

它们的工作方式完全相同。

你不觉得这很奇怪吗?这种奇怪的行为是否在某处得到了解释?

最佳答案

区分参数和列(如果两个名称相同)的最简单方法是在列名称中添加表名称。

UPDATE customers SET customers.Name = Name;

甚至您也可以添加数据库前缀,例如

UPDATE yourdb.customers SET yourdb.customers.Name = Name;

通过添加数据库名称,您可以从单个存储过程对多个数据库执行操作。

关于MySQL : When stored procedure parameter name is the same as table column name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30569682/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com