[SOLVED] How can I add stored procedures to mysql
Posted: Thu Feb 10, 2011 4:48 pm
Hi guys, I'm working with my new module and I need to "inject" stored procedures during install process of module into mysql database... I have that code:
(my $tableName is cms_module_sklep_nested_category and $this->db is $this->GetDb(); in my construct which invoke parent contruct())
My tables and other stuff was added, but stored procedures doesn't... MySql ver. is 5.1.4. What is wrong... :/ I don't know...
(my $tableName is cms_module_sklep_nested_category and $this->db is $this->GetDb(); in my construct which invoke parent contruct())
Code: Select all
if (!isset($gCms)) exit;
$tableName = $this->_getTableName();
$sql[] = 'DELIMITER ;';
$sql[] = 'DROP PROCEDURE IF EXISTS REMOVE_NODE_ONLY;';
$sql[] = 'DELIMITER $$';
$sql[] = '
CREATE PROCEDURE REMOVE_NODE_ONLY(IN $name VARCHAR(20))
BEGIN
START TRANSACTION;
SELECT @myLeft := lft, @myRight := rgt, @myWidth := rgt - lft + 1, @myParent := parent FROM '.$tableName.' WHERE name = $name;
DELETE FROM '.$tableName.' WHERE lft = @myLeft;
UPDATE '.$tableName.' SET rgt = rgt - 1, lft = lft - 1, parent = @myParent WHERE lft BETWEEN @myLeft AND @myRight;
UPDATE '.$tableName.' SET rgt = rgt - 2, parent = @myParent WHERE rgt > @myRight;
UPDATE '.$tableName.' SET lft = lft - 2, parent = @myParent WHERE lft > @myRight;
COMMIT;
END $$
';
$sql[] = 'DELIMITER ;';
foreach($sql as $q) {
$this->db->Execute($q);
}