2016-05-10 56 views
2

SQL函數對於傳統的項目,我想用笨執行此查詢:創建笨

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執行這樣的「多行」查詢?

回答

2

問題出在查詢中,而不是CodeIgniter。使用常規分隔符的函數中:如果你想執行一個功能或SP

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 ; 
1

,你需要把它添加到MySQL(在你的phpmyadmin或工作臺的MTOP菜單)你有很多otions

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

然後在CI你只叫喜歡

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

不需要我需要在CodeIgniter中創建函數。我正在使用它的遷移機制和許多不同的實例。在這種情況下我不能使用PhpMyAdmin,它需要太多的維護。 – xurei

-1

最好的解決辦法,我得到一直在尋找系統的庫中,並使用它。

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

我一直在尋找谷歌,而不是提供的解決方案。