簡體   English   中英

如何使用自動增加的列按存儲過程將數據插入表

[英]How to insert data to table by store procedure with auto-incremented column

我有一個存儲過程如下

DROP PROCEDURE IF EXISTS maintain//    
CREATE PROCEDURE maintain 
(    
    IN inMaintainType   CHAR(1),    -- 'i' = Insert, 'u'= Update/Edit, 'd'= Delete 
    IN inEntityId       INT,            -- 0 for Insert Case
    IN inEntityName     VARCHAR(100),
    IN inEntityDescription  VARCHAR(100),
    IN inEntityPrefix   CHAR(1),
    IN inStatus     CHAR(1),    -- 'a' = Active, 'i' = Not active
    IN inEmpId      INT,
    OUT outReturnStatus     INT,
    OUT outReturnRemarks    VARCHAR(100)
)

BEGIN    
    IF inMaintainType= 'i'
    THEN
        INSERT INTO Entity
        (
            EntityId,
            EntityName,
            EntityDescription,
            EntityPrefix,
            Status,
            CreatedBy,
            CreatedDate,
            ModifiedBy,
            ModifiedDate
        ) 
        VALUES
        (
            li_EntityId,
            inEntityName,
            inEntityDescription,
            inEntityPrefix,  
            'a',
            inEmpId,
            now(),
            inEmpId,
            now()
        );

        if row_count() != 0
            THEN SET outReturnStatus =0 ,
                outReturnRemarks = 'Insert Successful';
            ELSE SET outReturnStatus = 1,
                outReturnRemarks = 'Insert Not Successful';  
            END IF;                     
        END IF ;

我想調用該過程以使用變量插入數據

mysql_query("CALL maintain('i','$EntityId','$EntityName','$EntityDescription','$EntityPrefix','$Status','$EmpId',@outvari1,@outvari2)")or die(mysql_error());

但這向我顯示了錯誤

“字段列表”中的未知列“ li_EntityId”

EntityId是自動遞增的字段。

要將以上評論澄清為實際答案...

您已經設置了表格,以便EntityId字段將自動遞增。

因此,當您將記錄插入表中時,無需顯式為ID字段添加值-它將為您完成。

因此,解決方案是從INSERT INTO ...語句中刪除EntityId字段,並從插入的值中刪除li_EntityId值,因此僅將8個參數傳遞到其余8個字段中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM