无法检索从mysql函数返回的值
自从我使用MYSQL一周以来,我开始执行存储过程和视图,但在检索函数返回的值时遇到了一些问题。 下面是函数:无法检索从mysql函数返回的值,sql,mysql,function,Sql,Mysql,Function,自从我使用MYSQL一周以来,我开始执行存储过程和视图,但在检索函数返回的值时遇到了一些问题。 下面是函数: CREATE DEFINER=`root`@`localhost` FUNCTION `GetProductIdsStringByEnquiryId` ( InEnquiryId int ) RETURNS varchar(4000) CHARSET utf8 BEGIN DECLARE InP
CREATE DEFINER=`root`@`localhost` FUNCTION `GetProductIdsStringByEnquiryId`
(
InEnquiryId int
) RETURNS varchar(4000) CHARSET utf8
BEGIN
DECLARE InProductIds varchar(4000);
DECLARE ProductId varchar(50);
DECLARE x,y,z INT;
DECLARE sp1_cursor CURSOR FOR SELECT ProductId FROM enquiryproductid where
EnquiryId=InEnquiryId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET z = 1;
SET InProductIds='';
OPEN sp1_cursor;
REPEAT
FETCH sp1_cursor INTO ProductId;
SETInProductIds=concat(InProductIds,ProductId,',');
UNTIL (z=1)
END REPEAT;
CLOSE sp1_cursor;
RETURN InProductIds ;
END
我最初使用的是SQL SERVER 2005,我在其中编写的函数我尝试将其转换为MYSQL中的上述函数,
以下是SQL函数代码:
CREATE function [dbo].[GetBranchIdsStringByEmployeeId]
(
@EmployeeId as integer
)
returns nvarchar(4000)
as
begin
declare @BranchIds as nvarchar(4000)
set @BranchIds=''
if exists(select 1 from dbo.BranchEmployees where EmployeeId=@EmployeeId)
begin
select @BranchIds=@BranchIds+cast(BranchId as nvarchar(50))
+',' from dbo.BranchEmployees where EmployeeId=@EmployeeId
order by BranchId
end
return @BranchIds
end
有人能告诉我我在MYSQL中编写的函数是否在ProperManner中吗?请帮帮我。
谢谢。没有通读,但没有什么评论 mysql中的变量分配使用:=在set@Variable中可以使用=,在select@Variable:=@Variable+1中 你是想
SELECT group_concat(BranchId)
FROM dbo.BranchEmployees
WHERE EmployeeId = @EmployeeId
?实际上,我正在尝试检索分配给特定员工的多个分支。他们在查询中有问题吗?有没有其他方法获取他们…请允许我know@SUSH检查这是mysql扩展,提供了分配给特定员工的以逗号分隔的BranchID列表,等等。。。不诉诸SPs。另一个完全不同的注意事项是,您正在获取ID列表这一事实表明您将在另一个查询中使用它。这通常不是正确的方法-你可以通过子查询和/或连接得到任何你想要的东西。你说的是对的,我使用这个函数来检索多个分支,每个分支用逗号分隔。