0
DELIMITER $$

USE `RTList`$$

DROP PROCEDURE IF EXISTS `INSERT_INTO_MT_Tables`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `INSERT_INTO_MT_Tables`(
IN mtTableName VARCHAR(10)
, IN mTableName VARCHAR(15)
, IN mtField VARCHAR(15)
, IN mtItemID VARCHAR(15)
, IN mtItemName VARCHAR(15)
, IN AdminID INT)
BEGIN

DECLARE @SQLString VARCHAR(200);

SET @SQLString = 
'INSERT INTO ' + mtTableName +
'(' + mtItemID + ', ' + mtField + ', User_Created, Date_Created, User_Modified, Date_Modified)'
+ ' SELECT ' + mtItemID + ' , ' + mtField + ', AdminID, NOW(), AdminID, NOW()
FROM ' + mTableName + '
WHERE ' + mtField + ' = ''' + mtItemName + ''' LIMIT 1;';

PREPARE test FROM @SQLString;
EXECUTE test;

END$$

DELIMITER ;

CALL INSERT_INTO_MT_Tables('MT_Phone', 'M_Phone', 'Phone_Number', 'PhoneID', '12345678', 1);

変更後のエラーメッセージは次のとおりです(終了後にcmdを実行):

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXECUTE test;
DELIMITER' at line 2

変更後のエラーメッセージは次のとおりです(終了前にcmdを実行):

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@SQLString VARCHAR(200);
SET @SQLString = 
'INSERT INTO ' + mtTableName +
'(' + ' at line 9

やあ、

上記の私のコーディングを参照してください。ストアドプロシージャの知識がほとんどありません。しかし、私はこの質問を投稿する前に見回そうとしました。コマンドは単純なようですが、それでも運が悪いので、このコマンドを実行できます。

これが機能しないように、私が間違って書いた場所を教えてください。

この基本的な質問について、あなたの知識に本当に感謝します。

ありがとう。

4

1 に答える 1