-1
DELIMITER $$
CREATE PROCEDURE `InsertInfo`(
    IN AId VARCHAR(20),
    IN Number VARCHAR(30),
    IN Address VARCHAR(30)
)
BEGIN
    DECLARE @BId VARCHAR(100);
    SET @BId = AId + '_' + Number + '_' + Address;
END$$

DELIMITER ;

エラーの取得:

エラーコード:1064SQL構文にエラーがあります。'@BId VARCHAR(100);の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

SET @BId = AId + '_' + Number + '_' + Address;
END' at line 7
(0 ms taken)
4

2 に答える 2

0

を削除する必要があります@

 DECLARE BId VARCHAR(100);
 SET BId = AId + '_' + Number + '_' + Address;
于 2012-07-09T10:09:22.087 に答える
0

@AVDが削除する必要があると言ったように@、プロシージャ内で文字列をCONCATしたいと思いますか?

これは正しい方法です。

DROP PROCEDURE IF EXISTS `InsertInfo`;
DELIMITER $$
CREATE PROCEDURE `InsertInfo`(
    IN AId VARCHAR(20),
    IN Number VARCHAR(30),
    IN Address VARCHAR(30)
)
BEGIN
    DECLARE BId VARCHAR(100);
    SET BId = CONCAT(AId,'_',Number,'_',Address);
    SELECT BId;
END$$

DELIMITER ;

呼び出しInsertInfo

CALL InsertInfo('a','b','c');

戻り値

a_b_c
于 2012-07-09T10:17:25.307 に答える