在 SQL 中插入一行并在存储过程中设置变量?

Posted

技术标签:

【中文标题】在 SQL 中插入一行并在存储过程中设置变量?【英文标题】:Inserting a row in SQL and setting up variables in a stored procedure? 【发布时间】:2016-12-21 12:54:57 【问题描述】:

我想知道是否有人知道或者是否可以在下面的过程中设置 (id, FirstName, LastName) 以便我可以通过键入来插入新客户...

CALL ('1','John','Smith');
CALL ('2', 'Jane','Smith'); and so on.

目前我的代码如下所示。我正在使用 phpMyAdmin

CREATE PROCEDURE spUpdateCustomers(id INT(10),
FirstName VARCHAR(30), 
LastName VARCHAR(30))
BEGIN   
INSERT INTO customers (CustomerID, CustomerFirstName, CustomerLastName) VALUES (id , FirstName, LastName);
END

然后我调用它。

SET @id='1'; 
SET @FirstName='John'; 
SET @LastName='Smith'; 
CALL spUpdateCustomer(@id, @firstName, @lastName);

我的目标是避免在每次调用之前设置每个变量。任何帮助将不胜感激!

【问题讨论】:

标记您正在使用的 dbms。 (该代码看起来不像 ANSI SQL。) 不清楚你想要什么,这两个过程调用都可以在 phpmyadmin 中正常工作 感谢您对此进行调查,我在 phpMyAdmin 中使用的是 mysql 5.6.26。我不知道为什么,但是当我再次运行上面的代码时它起作用了!感谢您的帮助。 【参考方案1】:

您不需要为参数值定义变量:

CALL spUpdateCustomer(1, 'John', 'Smith');

注意:过程的第一个参数定义为整数。 MySQL 隐式地将 '1' 转换为 1(字符串到整数)。不过,如果您在数据库服务器上执行该过程,则最好对整数参数使用严格的整数值。

【讨论】:

以上是关于在 SQL 中插入一行并在存储过程中设置变量?的主要内容,如果未能解决你的问题,请参考以下文章

使用变量值在 Azure Logic App 中设置 SQL 存储过程路径

MYSQL,使用单个选择语句在存储过程中设置两个变量

在存储过程中设置 QUOTED_IDENTIFIER

如何在SQL中设置插入时判断表中是不是有该数据?

从标量 SQL 函数返回两个值

如何在 sql 中设置变量并在选择查询中使用它来显示和执行对该变量的操作(MAX MIN)?