mysql - 使用 ColdFusion 9 的 <CFQUERY>-Tag 在 MySQL5 中创建存储过程

标签 mysql stored-procedures coldfusion cfquery

我想知道是否可以通过ColdFusion的<cfquery>在MySQL5中创建存储过程-标签。我以前从未对存储过程做过任何事情...

我试图设置一个函数来替换MySQL的REPLACE但不区分大小写。我想使用提供的功能 here .

但首先我想通过 Coldfusion 创建这个函数,例如:

<CFQUERY datasource="#dsn#">
    DELIMITER $$

    DROP FUNCTION IF EXISTS `replace_ci`$$
    CREATE FUNCTION `replace_ci` ( str TEXT,needle CHAR(255),str_rep CHAR(255))
    RETURNS TEXT
    DETERMINISTIC
    BEGIN
    DECLARE return_str TEXT;
    SELECT replace(lower(str),lower(needle),str_rep) INTO return_str;
    RETURN return_str;
    END$$

    DELIMITER ;
</CFQUERY>

这会引发以下错误:

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 $$ DROP FUNCTION IF EXISTS replace_ci$$ CREATE FUNCTION' at line 1

尽管直接在例如中执行语句phpMyAdmin 成功。

这个article仅显示如何使用 <cfstoredproc> 调用存储产品-tag 但我看不到这些过程是在哪里声明给数据库服务器的。

最佳答案

也许你让事情变得更加复杂了。我发现以下讨论指出,您不需要 DELIMIER 关键字:http://forums.mysql.com/read.php?39,130834,248556#msg-248556

<CFQUERY datasource="mysql_jdbc">
    DROP FUNCTION IF EXISTS `replace_ci`;

    CREATE FUNCTION `replace_ci` ( str TEXT,needle CHAR(255),str_rep CHAR(255))
        RETURNS TEXT
         DETERMINISTIC
        BEGIN
        DECLARE return_str TEXT;
        SELECT replace(lower(str),lower(needle),str_rep) INTO return_str;
        RETURN return_str;
     END
</CFQUERY>

不要忘记将 allowMultiQueries=true 添加到您的 JDBC URL:http://www.bennadel.com/blog/1542-MySQL-3-4-com-mysql-jdbc-Driver-And-allowMultiQueries-true.htm

关于mysql - 使用 ColdFusion 9 的 <CFQUERY>-Tag 在 MySQL5 中创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554775/

相关文章:

mysql - 连接表以获取具有两个 id 的列的名称

mysql - 单数词和 MySQL 全文搜索的问题

mysql - 根据mysql中的条件添加两行的列

mysql - MySQL Workbench 6.0 存储过程出现语法错误

mysql - 计算元件更换次数

php - 在 mariadb 存储过程中设置 PHP 变量; SQLSTATE[42S22] : Column not found

javascript - 使用 ajax 保存 Web 应用程序的用户选择

php - 比较 Virtuemart 中的产品

iis-7 - 使用 Windows 身份验证的 IIS 7.5 上的 ColdFusion 9 的正确权限是什么

coldfusion - 按 2 个键对结构体数组进行排序