导致在调用函数时返回空值

时间:2013-03-25 09:39:06

标签: mysql

我正在尝试创建一个从我的表中提取任何以J

开头的员工姓名的函数
delimiter $$
create function myfunction(nume_persoane varchar (30)) returns int deterministic
begin
declare omcucap int;
select first_name into omcucap  from employee where id = nume_persoane and first_name = 'J%';
return omcucap;
end $$

当我调用函数select myfunction(first_name) from employee;时,它返回null。这是为什么?什么是解释..

3 个答案:

答案 0 :(得分:1)

omcucap int;

您的first_name是否为int类型?我不这么认为。

考虑以下变化

UPPER(first_name) LIKE 'J%';

你不能使用=''''

答案 1 :(得分:0)

要完成shazin的答案,要使其正常工作,你需要将omcucap声明为varchar。

declare omcucap varchar(first_name size);

我并不认为id是varchar。因此nume_persoane将是int(id size)。返回类型为varchar(first_name size)

你的功能将是

delimiter $$
create function myfunction(nume_persoane int(10)) returns varchar(50) deterministic
begin
declare omcucap varchar(50);
select first_name into omcucap  from employee where id = nume_persoane and first_name LIKE 'J%' LIMIT 1;
return omcucap;
end $$

你的身高是first_name10是你的身份证明 我添加LIMIT 1语句以避免几个结果问题。

修改
如果您不是默认值,请使用:

select IFNULL(first_name, 'default_value') into omcucap[...]

答案 2 :(得分:0)

您的参数'nume_persoane'设置为员工的ID

  

从员工中选择first_name到omcucap,其中id = nume_persoane和first_name ='J%';

但您使用first_name

调用您的函数
  

选择myfunction(first_name)

并且first_name不是int或?但是您尝试将first_name插入声明的变量

  

声明omcucap int;
  选择first_name进入omcucap ...

更新

使用这些功能:

delimiter $$
create function myfunction(p1 int) returns int
begin
declare eID int;
select id into eID  from employee where id = p1 and first_name LIKE 'J%';
return eID;
end $$

并使用以下select语句执行该函数:

SELECT myfunction(id) FROM employee;