Mysql SQL语法中有错误(创建过程)

Mysql SQL语法中有错误(创建过程),mysql,mariadb,Mysql,Mariadb,我尝试在mariadb中创建函数。要按公司id int获取所有数据吗 CREATE FUNCTION getByCompId (cid INT) RETURN (SELECT * FROM companies WHERE id=cid); 结束当我尝试创建时,我得到错误: SQL Error [1064] [42000]: (conn=111) You have an error in your SQL syntax; check the manual that corresponds to

我尝试在mariadb中创建函数。要按公司id int获取所有数据吗

CREATE FUNCTION getByCompId (cid INT)
RETURN (SELECT * FROM companies WHERE id=cid);
结束当我尝试创建时,我得到错误:

SQL Error [1064] [42000]: (conn=111) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'RETURN (SELECT * FROM cdr WHERE id=cid)' at line 2

不能从函数返回表格结果集,只能返回标量值。相反,您可以使用存储过程:

delimiter //
create procedure getbycompid (cid int)
begin
    select * from companies where id = cid;
end //
delimiter ;
然后你这样调用这个过程:

call getbycompid(1);
由于我们只有一行程序,我们可以将代码缩短为:

create procedure getbycompid (cid int)
    select * from companies where id = cid
;

函数可以返回一个标量值,而不是多列行集。函数的返回数据类型必须显式指定为RETURNS属性。仔细研究:好的,所以,如果我想从表中获取公司名称,我会尝试:好的,所以,如果我想从表中获取公司名称,我会尝试:创建函数getByCompId cid INT RETURN,从id=cid的公司中选择cname;并且具有正确的语法以使用near'RETURN