如何在存储过程中执行if语句

时间:2014-05-09 01:08:04

标签: mysql

基本上,如果SystemFeedbackidParam不为null,我将传递参数SystemFeedbackidParam,做一件事,如果是,那就做单独的事情。我可以在SQL中执行此操作,但这样做的方法是mysql正在逃避我。

谢谢!

CREATE PROCEDURE `_Insert_FeedBack`(
   FeedbackTypeParam       varchar(20),
   FeedbackSubjectParam    varchar(200),
   FeedbackTextParam       text,
   FeedbackHTMLParam       longtext,
   SubmittedByParam        varchar(20),
   SubmittedDateParam      datetime,
   SystemFeedbackidParam int)
   BEGIN
      IF (SystemFeedbackidParam IS NOT NULL)
      THEN
--/*Insert Child Record into tblfeedbackitems */
         INSERT INTO tblfeedbackitems(SystemFeedbackId,
                                      FeedbackType,
                                      FeedbackText,
                                      FeedbackHTML,
                                      SubmittedBy,
                                      SubmittedDate)
         VALUES (SystemFeedbackidParm,
                 FeedbackTypeParam            
                                  ,
                 FeedbackTextParam          
                                  ,
                 FeedbackHTMLParam          
                                  ,
                 SubmittedByParam           
                                 ,
                 SubmittedDateParam         
                                   );
      ELSE
 --/*Insert Parent Record into tblFeedback */

         INSERT INTO tblfeedback(
                                 FeedbackType,
                                 FeedbackSubject,
                                 FeedbackStatus)
         VALUES (
                 FeedbackTypeParam,
                 FeedbackSubjectParam,
                 'Open');

--/*Insert Child Record into tblFeedback */
         INSERT INTO tblfeedbackitems(SystemFeedbackId,
                                      FeedbackType,
                                      FeedbackText,
                                      FeedbackHTML,
                                      SubmittedBy,
                                      SubmittedDate)
         VALUES (LAST_INSERT_ID(),
                 FeedbackTypeParam            
                                  ,
                 FeedbackTextParam          
                                  ,
                 FeedbackHTMLParam          
                                  ,
                 SubmittedByParam           
                                 ,
                 SubmittedDateParam         
                                   );
      END

2 个答案:

答案 0 :(得分:1)

这里有几个问题:

  • 评论以 - (空格)开头 - 您的空间错过了
  • 分隔符。更改顶部的分隔符,以便分号不会终止您的程序。将其更改回底部
  • 你已经开通了IF声明,但没有关闭它
  • 您已经开通了BEGIN但未终止结束END

试试这个:

Delimiter $$
CREATE PROCEDURE `_Insert_FeedBack`(
   FeedbackTypeParam       varchar(20),
   FeedbackSubjectParam    varchar(200),
   FeedbackTextParam       text,
   FeedbackHTMLParam       longtext,
   SubmittedByParam        varchar(20),
   SubmittedDateParam      datetime,
   SystemFeedbackidParam int)
   BEGIN
      IF (SystemFeedbackidParam IS NOT NULL)
      THEN
-- /*Insert Child Record into tblfeedbackitems */
         INSERT INTO tblfeedbackitems(SystemFeedbackId,
                                      FeedbackType,
                                      FeedbackText,
                                      FeedbackHTML,
                                      SubmittedBy,
                                      SubmittedDate)
         VALUES (SystemFeedbackidParm,
                 FeedbackTypeParam            
                                  ,
                 FeedbackTextParam          
                                  ,
                 FeedbackHTMLParam          
                                  ,
                 SubmittedByParam           
                                 ,
                 SubmittedDateParam         
                                   );
      ELSE
 -- /*Insert Parent Record into tblFeedback */

         INSERT INTO tblfeedback(
                                 FeedbackType,
                                 FeedbackSubject,
                                 FeedbackStatus)
         VALUES (
                 FeedbackTypeParam,
                 FeedbackSubjectParam,
                 'Open');

-- /*Insert Child Record into tblFeedback */
         INSERT INTO tblfeedbackitems(SystemFeedbackId,
                                      FeedbackType,
                                      FeedbackText,
                                      FeedbackHTML,
                                      SubmittedBy,
                                      SubmittedDate)
         VALUES (LAST_INSERT_ID(),
                 FeedbackTypeParam            
                                  ,
                 FeedbackTextParam          
                                  ,
                 FeedbackHTMLParam          
                                  ,
                 SubmittedByParam           
                                 ,
                 SubmittedDateParam         
                                   );
      END IF; 
END $$
Delimiter ;

注意:我已修复您的语法错误。我不知道你的代码是否真的有效。

答案 1 :(得分:0)

查看此网站上的mysql文档http://dev.mysql.com/doc/refman/5.0/en/if.html 在那里你可以找到所有的信息,但基本上就是这样

IF NOT SystemFeedbackidParam THEN
......
 END IF;

你也可以使用else语句。