2017-09-18 145 views
0

我有兩個表說如何使用mysql中的存儲過程輸出參數?

表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) 
); 

我將不得不創建一個存儲過程,將數據插入表: '詳細信息'

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'作爲ou實現Id輸入參數。 有人可以幫助我糾正上述存儲過程,因爲我是新手。任何幫助表示讚賞。 TYIA!

+0

MySQL的自動增量列的整數。請參閱https://stackoverflow.com/questions/23331194/concatenating-a-string-and-primary-key-id-while-inserting/23331246#23331246 –

回答

0

你需要使用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 
+0

但我希望Id使用以下格式'QW001' – Kenz

+0

有任何其他方式可以連接或什麼嗎? – Kenz

+0

你可以使用mysql的CONCAT()函數 – colapiombo