我正在开发一个Java应用程序,需要在MySQL中编写一个单独的存储过程来通过查询创建数据库本身:
CREATE DATABASE IF NOT EXISTS db_name;
我试过这个:
DELIMITER //
CREATE PROCEDURE create_database_and_dish_table()
BEGIN
CREATE DATABASE IF NOT EXISTS restaurant_db;
USE restaurant_db;
CREATE TABLE dish (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description VARCHAR(255),
price DECIMAL(10, 2),
category VARCHAR(50)
);
END //
但是,在 MySQL Workbench 中,我收到错误,因为我没有指定所需的数据库名称。 那么我该怎么做呢?之后,如何从 Java JDBC 应用程序连接到 MySQL 服务器而不在连接字符串中提及数据库名称,然后调用所需的存储创建过程?
这是一个“先有鸡还是先有蛋”的问题。
在创建模式之前,您无法在
restaurant_db
模式中创建过程。
以此类推:在任何操作系统中,在创建文件夹之前都无法在该文件夹内创建文件。您必须首先创建该文件夹。
同样,您无法创建一个创建数据库的存储过程,以便该存储过程驻留在该数据库中。
存储过程可以驻留在另一个数据库中,并且它可以创建新数据库并在该新数据库中创建表。