6

好吧,我一直在扯这个,为什么这不起作用?

DELIMITER |

CREATE PROCEDURE Decrypt_pw()
    READS SQL DATA
BEGIN
  SELECT 'Hey Select';
END|

它是如此基本,我很确定我使用了正确的语法,我错过了什么?

错误:

21:14:07  [DELIMITER - 0 row(s), 0.000 secs]  [Error Code: 1064, SQL State: 42000]  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 PROCEDURE Decrypt_pw()
    READS SQL DATA
BEGIN
  SELECT 'He' at line 1
 21:14:07  [END| - 0 row(s), 0.000 secs]  [Error Code: 1064, SQL State: 42000]  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 'END|' at line 1

我正在使用最新版本的 DbVisualizer,这个问题可能出在软件本身吗?

也许我应该更好地解释自己,密码在我的数据库中加密(不用担心),这允许我解密它们,这是我正在处理的个人项目。

我正在尝试开发一个脚本,允许我运行它并设置必要的数据库、表等以使其正常工作,并且我需要一些也必须创建的 SP,我正在尝试通过mysqli_query,这甚至可能吗?

基本上它是用于 php 应用程序的“设置脚本”。

更新:似乎应该可以工作,但是由于 HostGator 的人 -.- 不允许 PHP 中的对象,我不能使用对象。

我已经几乎放弃了 mysqli,因为它不起作用我正在尝试使用 shell_exec,我正在创建程序,但是当我检查 ddl 时它是空的,它正在创建空程序,但至少它正在做一些事情......

4

3 回答 3

2

这可能是软件版本问题...我尝试了您的代码,它对我来说效果很好...试试这个

DELIMITER //
    CREATE PROCEDURE Decrypt_pw()
            READS SQL DATA
      BEGIN
      SELECT 'Hey Select';
      END //
    DELIMITER ;
于 2012-07-02T20:39:30.490 回答
0

至少从 9.1 开始,DBVisualizer 不支持 DELIMITER 关键字。这是他们这样做的方式:链接

于 2015-03-17T19:13:54.413 回答
0

绝对不是一个优雅的解决方法......但它有效。
所有关于不炮轰的常见警告,yada yada yada。

// here's the core stored procedure code
$stored = <<<EOT
CREATE PROCEDURE Decrypt_pw()
    READS SQL DATA
BEGIN
  SELECT * FROM whatever;
END #
EOT;

// first, shell out to change the delimiter using mysql command-line
shell_exec('mysql -u user -ppassword -e "DELIMITER #");

// assuming $pdo is a valid PDO connection 
// send the command to create the stored procedure:
$pdo->exec($stored);

// now shell out again to change the delimiter back
shell_exec('mysql -u user -ppassword -e "DELIMITER ;");
于 2019-01-22T14:45:38.870 回答