簡體   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