我正在尝试创建一个从我的表中提取任何以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
。这是为什么?什么是解释..
答案 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_name
,10
是你的身份证明
我添加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;