【问题标题】:how to output a parameter using a stored procedure in mysql?如何使用mysql中的存储过程输出参数?
【发布时间】:2018-02-27 03:52:31
【问题描述】:

我有两张桌子说

表1:

create table Person(
  Id int primary key auto_increment,
  name varchar(20),
  Gender char(1)
);

表2:

create table Details(
  Age int,
  Phone int(10) primary key,
  Address varchar(100)
  Id foreign key(Id) references Person(Id),
  Name foreign key(Name) references Person(Name)
);

我将不得不创建一个存储过程来将数据插入到表中:'Details'

create procedure usp_insert(
  IN Name varchar(100),
  IN Age int,
  IN Phone int(10),
  IN Address varchar(100),
  OUT Id int
)
begin

//want to output the Id as QW001 on inserting the data into the Details table.

insert into Details(Name,Age,Phone,Address) values(name,age,phone,address)
end

我怎样才能以以下格式“QW001”作为输出参数来实现 ID。 有人可以帮我纠正上述存储过程,因为我是新手。任何帮助表示赞赏。 蒂亚!

【问题讨论】:

标签: mysql stored-procedures


【解决方案1】:

你需要像这样使用 LAST_INSERT_ID() :

create procedure usp_insert(
  IN Name varchar(100),
  IN Age int,
  IN Phone int(10),
  IN Address varchar(100),
  OUT Id int
)
begin

insert into Details(Name,Age,Phone,Address) values(name,age,phone,address);
set Id =CONCAT("QW00", LAST_INSERT_ID()) AS ConcatenatedString;
end

【讨论】:

  • 但我希望 ID 采用以下格式 'QW001'
  • 有没有其他方法可以连接或其他什么?
  • 可以使用mysql的CONCAT()函数
  • 每当向表中添加新行时,是否会插入此 ID?
  • 您从过程中输出的 id 是 primary_key 和 text 的连接。如果你想保存在另一个表中是一个不同的请求。请更好地解释你想要做什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
相关资源
最近更新 更多