我有一个存储过程,其中一个in参数返回多行,包含3个不同的列。我希望将这个结果插入另一个表中,其中包含这3个列和其他表单个字段。
但是,当我创建临时表时,它会显示一个空白的结果集。
有人可以帮我解决这个问题吗?
CREATE DEFINER=`root`@`localhost` PROCEDURE `getContactRolePermission`(
in contactroleid double
-- inout PermissionTableID double
)
BEGIN
select -- entitydetails.id,
contact.id as userid,
-- contacttyperolemap.contacttypeId ,
contacttyperolemap.roleid ,rolepermission.permissionid
from contacttyperolemap
join rolepermission on contacttyperolemap.roleid=rolepermission.roleid
join entitydetails on entitydetails.id = contacttyperolemap.ContactTypeID
join contact on contact.contactTypeID = entitydetails.id
where contacttyperolemap.contactTypeID = contactroleid
order by contact.id;
CREATE temporary TABLE tmp(
ID double ,
userid double ,
roleid double ,
permissionid double
);
END
stored procedures result is
uid rid pid
2 1 5
2 1 2
2 1 3
2 1 4
2 1 1
23 1 4
23 1 1
23 1 5
23 1 2
23 1 3
26 1 4
26 1 1
26 1 5
26 1 2
26 1 3
我想在userpermission
表
schema is
id uid rid pid
1 10 2 1
答案 0 :(得分:0)
看起来您需要为前3行创建视图而不是存储过程。然后在单独的查询中,您可以查询该视图中的任何列,并将该数据与您希望从其他表中获得的任何其他数据连接起来。希望我能正确地阅读这个问题。下面是关于创建视图的文章:https://msdn.microsoft.com/en-us/library/ms187956.aspx
答案 1 :(得分:0)
使用INSERT ... SELECT命令填充目标表。
而且,你的临时表显示空结果,因为你没有填写它。