mysql-使用prepare and execute give me error#1064

cvxl0en2  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(192)

我正在尝试创建一个过程,该过程只在特定布尔值标记为true时返回一个表。
这是我的table:

CREATE TABLE company (
    id              INT         NOT NULL    AUTO_INCREMENT,
    name            VARCHAR(50) NOT NULL,
    is_grocery_store            BIT(1)  NOT NULL DEFAULT b'0',
    is_restaurant               BIT(1)  NOT NULL DEFAULT b'0',
    is_entertainment            BIT(1)  NOT NULL DEFAULT b'0',
    is_retail_store             BIT(1)  NOT NULL DEFAULT b'0',
    is_financial_institution    BIT(1)  NOT NULL DEFAULT b'0',
    is_mortgage_company         BIT(1)  NOT NULL DEFAULT b'0',
    is_medical_establishment    BIT(1)  NOT NULL DEFAULT b'0',
    is_insurance_agency         BIT(1)  NOT NULL DEFAULT b'0',
    PRIMARY KEY (id)
)

程序如下:

CREATE PROCEDURE get_company (IN CORPORATION ENUM(
        'grocery_store',
        'restaurant',
        'entertainment',
        'retail_store',
        'financial_institution',
        'mortgage_company',
        'medical_establishment',
        'insurance_agency'
    ))

    SET @sql = "SELECT * FROM company WHERE is_? = b'1'");
    PREPARE stmt FROM @sql;
    EXECUTE stmt USING FAMILY_ID, CORPORATION;
    DEALLOCATE PREPARE stmt;

我插入了一堆行,下面是我调用过程的地方:

CALL get_company('financial_institution');

当我尝试运行它时,出现以下错误:


# 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NULL' at line 1

请注意,我使用phpmyadmin上的sql选项卡来运行此代码,而他们不使用 delimiter // 或者 BEGIN 以及 END . 这不是问题所在。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题