I wrote a stored procedure that worked in my local machine but in the server, it wont execute! It would be great to have help
The stored procedure is
DROP PROCEDURE `ASKUS_INSERT`// CREATE DEFINER=`root`@`localhost` PROCEDURE `ASKUS_INSERT`( SENDERCONSUMERID INT(11), QUESTION_POSTED TEXT, DESCRIPTION_POSTED TEXT, NETWORK_ID INT(11), COMMTYPEID INT(11), CONSUMERID INT(11), CATEGORY_ID INT(11), ACTIONID INT(11), QUESTION_SLUG TEXT ) BEGIN DECLARE LASTINSERTEDID INT DEFAULT 0; DECLARE GETTIPSAMOUNT INT DEFAULT 0; DECLARE GETTIPSAMOUNTCONSUMER INT DEFAULT 0; DECLARE SETTIPSAMOUNTCONSUMER INT DEFAULT 0; DECLARE CHECKCOUNTTIPSEXIST INT DEFAULT 0; SELECT COUNT(*) INTO CHECKCOUNTTIPSEXIST FROM ACTION_ENTERPRISE_MAPPING WHERE ACTION_ID = ACTIONID; IF CHECKCOUNTTIPSEXIST > 0 THEN SELECT SUM(TIP_AMOUNT) INTO GETTIPSAMOUNT FROM ACTION_ENTERPRISE_MAPPING WHERE ACTION_ID = ACTIONID; ELSE SET GETTIPSAMOUNT = 0; END IF; SELECT CONSUMER_TIPS INTO GETTIPSAMOUNTCONSUMER FROM CONSUMER_PROFILE WHERE CONSUMER_ID = SENDERCONSUMERID; SET SETTIPSAMOUNTCONSUMER = GETTIPSAMOUNTCONSUMER + GETTIPSAMOUNT; INSERT INTO NETWORK_COMMUNICATIONS (COMMUNICATIONS_ID,SENDER_CONSUMER_ID,NETWORK_COMM_TYPE_ID,PARENT_COMMUNICATIONS_ID,IS_ACTIVE,LAST_MOD_TIME,CONSUMER_ID) VALUES ('',SENDERCONSUMERID,COMMTYPEID,'0','1',NOW(),CONSUMERID); SET LASTINSERTEDID = LAST_INSERT_ID(); UPDATE CONSUMER_PROFILE SET CONSUMER_TIPS = SETTIPSAMOUNTCONSUMER WHERE CONSUMER_ID = SENDERCONSUMERID; INSERT INTO CONSUMER_ACTION_LOG (ACTION_LOG_ID,ACTION_ID,CONSUMER_ID,TIPS_AMOUNT,LAST_MOD_TIME,COMMUNICATIONS_ID,COMM_TYPE_ID) VALUES ('',ACTIONID,SENDERCONSUMERID,GETTIPSAMOUNT,NOW(),LASTINSERTEDID,ACTIONID); INSERT INTO NETWORK_COMMUNICATIONS_MESSAGE (NETWORK_COMMUNICATION_MESSAGE_ID,COMMUNICATIONS_ID,SUBJECT,MESSAGE,IS_ACTIVE,LAST_MOD_TIME,QUESTION_SLUG) VALUES ('',LASTINSERTEDID,QUESTION_POSTED,DESCRIPTION_POSTED,'1',NOW(),QUESTION_SLUG); INSERT INTO COMMUNICATION_INTEREST_MAPPING (ID,CONSUMER_INTEREST_EXPERT_ID,CONSUMER_ID,COMMUNICATION_ID,IN_NETWORK,LAST_MOD_TIME) VALUES ('',CATEGORY_ID,SENDERCONSUMERID,LASTINSERTEDID,NETWORK_ID,NOW()); IF SENDERCONSUMERID != 0 AND CONSUMERID != 0 AND SENDERCONSUMERID != CONSUMERID THEN INSERT INTO CONSUMER_NOTIFICATION (CONSUMER_NOTIFICATION_ID,CONSUMER_ID,SENDER_CONSUMER_ID,ACTION_ID,COMMUNICATIONS_ID,IS_ACTIVE,LAST_MOD_TIME) VALUES ('',CONSUMERID,SENDERCONSUMERID,COMMTYPEID,LASTINSERTEDID,'1',NOW()); END IF; END
It says there are many syntax errors and also unknown variables. In that case it should not work in my localhost. But it did! Im confused!
Shouldn't you change the delimiter if this is to work? Now you have ;
halfway that may be causing trouble?
You can check out this manual page for an example that looks like this:
mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END//
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
As you can see, the delimiter is set to "//" first. Your first line implies that you are trying to do something like that anyway. Maybe you just forgot to paste the delimiter lines?
this:
DROP PROCEDURE `ASKUS_INSERT`//
would only work with the delimiter set at '//'. You should (see example) probably end with //
as well.