繁体   English   中英

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

[英]How do to do an if statement in a stored procedure

基本上,如果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

您在这里遇到几个问题:

  • 注释以-(空格)开头-您缺少空格
  • 分隔符。 更改顶部的定界符,以使分号不会终止您的过程。 改回底部
  • 您已打开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 ;

注意:我已修复您的语法错误。 我不知道您的代码是否会真正起作用。

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

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

您也可以使用else语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM