0

MySQLでSQLスクリプトファイルを作成しています。スクリプトは、テーブルといくつかのストアドプロシージャを作成するだけです。2つの質問があります。

  1. テーブルが存在するかどうかを確認する必要があります。createtableステートメントをスキップしてください。ただし、プロシージャが存在する場合は、それを削除してから新しいプロシージャを作成します。これが私が試しているコードです-

    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$$
    

    「DROPPROCEDUREIFEXISTSusp_StudentRetrieveの近くのSQL構文エラー」というエラーがあります。

  2. PHPコードを使用してスクリプトファイルを実行するための最良の方法は何ですか?

よろしくお願いします。

リテッシュ

PS-役立つ場合は、MySQLWorkbenchV5.2とMySQL5.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 に答える