0

我正在 MySQL 中创建一个 SQL 脚本文件。该脚本只是创建一个表和一些存储过程。我有两个问题。

  1. 我需要检查表是否存在,跳过创建表语句。但如果存在程序,请将其删除,然后创建一个新程序。这是我正在尝试的代码 -

    CREATE TABLE IF NOT EXISTS Student (   
        Id INT PRIMARY KEY,   Name
        VARCHAR(100) NOT NULL 
    );
    
    DROP PROCEDURE IF EXISTS usp_StudentInsert;
    
    DELIMITER $$
    CREATE PROCEDURE usp_StudentInsert(
        id INT, 
        name VARCHAR(100)) 
    BEGIN    
        INSERT INTO Student(Id, Name) VALUES(id, name); 
    END$$
    
    DROP PROCEDURE IF EXISTS usp_StudentRetrieve;
    
    DELIMITER $$ 
    CREATE PROCEDURE usp_StudentRetrieve(studentId INT)
    BEGIN
        SELECT * FROM Student WHERE Id = studentId;
    END$$
    

    出现错误“DROP PROCEDURE IF EXISTS usp_StudentRetrieve 附近的 SQL 语法错误”;

  2. 使用 PHP 代码执行脚本文件的最佳方法是什么?

提前谢谢你。

里特什

PS - 如果有帮助,我将 MySQL Workbench V5.2 与 MySQL 5.1 一起使用。

4

1 回答 1

0

我在分隔符后添加了一个空格,它对我有用:

delimiter$$delimiter $$

mysql> CREATE PROCEDURE usp_StudentInsert(id INT,name VARCHAR(100)) 
    -> BEGIN
    ->  INSERT INTO Student(Id, Name) VALUES(id, name); 
    -> END
    -> $$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> drop procedure usp_studentinsert;
Query OK, 0 rows affected (0.00 sec)

编辑:

mysql> DROP PROCEDURE IF EXISTS usp_StudentInsert;
Query OK, 0 rows affected (0.00 sec)
于 2012-07-02T18:39:19.657 回答