使用CodeIgniter创建SQL函数


Create a SQL FUNCTION with CodeIgniter

对于遗留项目,我想使用CodeIgniter:执行此查询

DELIMITER $$
CREATE FUNCTION `getCustomerFullName`(intCustomerID INT) 
  RETURNS varchar(100) CHARSET latin1
  return CONCAT(
    (SELECT FirstName FROM Customer WHERE CustomerID = intCustomerID),
    ' ',
    (SELECT LastName FROM Customer WHERE CustomerID = intCustomerID))$$
DELIMITER ;

当我尝试使用$this->db->query()时,我会得到以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 
'DELIMITER $$ CREATE FUNCTION `getCustomerFullName`(intCustomerID INT) RETURNS '
at line 1

如何使用CodeIgniter执行这样的"多行"查询?

问题在查询中,而不是CodeIgniter。在函数中使用正则分隔符:

DELIMITER $$
CREATE FUNCTION `getCustomerFullName`(intCustomerID INT) 
  RETURNS varchar(100) CHARSET latin1
  return CONCAT(
    (SELECT FirstName FROM Customer WHERE CustomerID = intCustomerID),
    ' ',
    (SELECT LastName FROM Customer WHERE CustomerID = intCustomerID));
$$
DELIMITER ;

如果你想执行一个函数或SP,你需要将其添加到mysql中(在phpmyadmin或Workbench的mtop菜单中)——你有很多选项

in More (routine / new / add new)
create a function or sp

然后在CI中,你只会像一样呼叫

$this->db->query('call Function()');

我得到的最佳解决方案是查看系统库内部并使用它。

$this->db->simple_query("YOUR FULL SQL STRING");

我在谷歌上看,而不是提供的解决方案。