mysql函数,有错误:不允许从函数返回结果集

时间:2013-09-21 21:49:04

标签: mysql mysql-error-1415

我在mysql中创建函数,这是我的函数

DROP FUNCTION IF EXISTS cta_db_railink_02.sf_booking; 创建功能cta_db_railink_02。sf_booking(    p_org varchar(5),    p_des varchar(5),    p_depart日期,    p_train_no varchar(15), - 旅行号码    p_num_pax_adult int,    p_num_pax_child int,    p_subkelas varchar(1),    p_caller varchar(30),    p_adult_nm varchar(100),    p_adult_birtdate varchar(100),    p_adult_mobile varchar(30),    p_adult_id_no varchar(20),    p_child_nm varchar(100),    p_child_birth varchar(100),    p_rqid varchar(50))返回bigint(20) BEGIN

  --  transaction variable
  DECLARE l_org                  varchar(5);
  DECLARE l_des                  varchar(5);
  DECLARE l_depart_date          date;
  DECLARE l_train_no             varchar(20);
  DECLARE l_pax_num              bigint(20);
  DECLARE l_booking_no           varchar(6);
  DECLARE l_kelas_id             int(11);
  DECLARE l_subkelas_id          int(11);
  DECLARE l_channel_id           int(11);
  DECLARE l_count_pax            int(11);
  DECLARE l_trip_no              varchar(6);
  DECLARE l_vehicle_id           bigint(20);
  DECLARE l_vehicle_no           varchar(15);
  DECLARE l_vehicle_nm           varchar(50);
  DECLARE l_operations_day       bigint(11);
  DECLARE l_effective_from       date;
  DECLARE l_effective_to         date;
  DECLARE l_pub_sch_id           bigint(11);
  DECLARE l_pub_sch_dtl_id       bigint(11);
  DECLARE l_arrival_date         date;
  DECLARE l_etd                  time;
  DECLARE l_eta                  time;
  DECLARE l_stations_id_ori      bigint(20);
  DECLARE l_stations_id_dest     bigint(20);
  DECLARE l_originations_label   varchar(5);
  DECLARE l_originations_nm      varchar(50);
  DECLARE l_destinations_label   varchar(5);
  DECLARE l_destinations_nm      varchar(50);
  DECLARE l_jarak_tempuh         int(11);
  DECLARE l_waktu_tempuh         int(11);
  DECLARE l_schedule_desc        text;
  DECLARE l_kelas_code           varchar(2);
  DECLARE l_subkelas_code        varchar(2);
  DECLARE l_trans_hold_id        bigint(20);
  DECLARE l_last_row_fetched     int;
  DECLARE l_trans_date           date;
  DECLARE l_pax_adult_nm         varchar(100);
  DECLARE l_adult_birthdate      varchar(100);
  DECLARE l_adult_mobile         varchar(100);
  DECLARE l_adult_id_no          varchar(100);
  DECLARE l_child_nm             varchar(100);
  DECLARE l_child_birth          varchar(100);
  DECLARE l_auto_seat_id         bigint(20);
  DECLARE l_coach_id             bigint(20);
  DECLARE l_coach_code           varchar(10);
  DECLARE l_coach_nm             varchar(50);
  DECLARE l_coach_seq            int(11);
  DECLARE l_seat_str_row         int(11);
  DECLARE l_seat_str_col         int(11);
  DECLARE l_seat_str_label       int(11);

  DECLARE l_trans_id             bigint(20);

  --  Passenger variable
  DECLARE l_pax_id               int(11);
  DECLARE l_pax_type_id          bigint(20);
  DECLARE l_pax_no_id                     varchar(20);
  DECLARE l_pax_title                     varchar(10);
  DECLARE l_pax_first_name                varchar(50);
  DECLARE l_pax_last_name                 varchar(50);
  DECLARE l_pax_birthday                  date;
  DECLARE l_pax_address_1                 varchar(255);
  DECLARE l_pax_address_2                 varchar(255);
  DECLARE l_pax_phone_home                varchar(20);
  DECLARE l_pax_phone_mobile              varchar(20);
  DECLARE l_pax_email                     varchar(60);
  DECLARE l_pax_codezip                   varchar(10);
  DECLARE l_pax_desc                      text;


  DECLARE i int;
  DECLARE j int;
  DECLARE
     trip_choice_cur CURSOR FOR
     SELECT    a.trip_no,
               b.vehicle_id,
               b.vehicle_no,
               b.vehicle_nm,
               b.operations_day,
               b.effective_from,
               b.effective_to,
               b.pub_sch_id,
               a.pub_sch_dtl_id,
               a.depart_date,
               a.arrival_date,
               a.etd,
               a.eta,
               a.stations_id_ori   ,
               a.stations_id_dest  ,
               a.originations_label,
               a.originations_nm   ,
               a.destinations_label,
               a.destinations_nm   ,
               a.jarak_tempuh      ,
               a.waktu_tempuh      ,
               a.schedule_desc
      FROM     pub_sch_detail a, pub_sch b
      WHERE
               a.pub_sch_id=b.pub_sch_id
      AND      a.depart_date BETWEEN b.effective_from AND b.effective_to
      AND      a.originations_label = p_org
      AND      a.destinations_label = p_des
      AND      a.trip_no = p_train_no
      AND      depart_date = p_depart
      ORDER BY a.etd;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_last_row_fetched=1;

  SET l_last_row_fetched = 0;

  OPEN trip_choice_cur;

 trip_choice_loop:
  LOOP
     FETCH trip_choice_cur
        INTO   l_trip_no,
               l_vehicle_id,
               l_vehicle_no,
               l_vehicle_nm,
               l_operations_day,
               l_effective_from,
               l_effective_to,
               l_pub_sch_id,
               l_pub_sch_dtl_id,
               l_depart_date,
               l_arrival_date,
               l_etd,
               l_eta,
               l_stations_id_ori,
               l_stations_id_dest,
               l_originations_label,
               l_originations_nm,
               l_destinations_label,
               l_destinations_nm,
               l_jarak_tempuh,
               l_waktu_tempuh,
               l_schedule_desc;

     IF l_last_row_fetched = 1
     THEN
        LEAVE trip_choice_loop;
     END IF;
  END LOOP;

  CLOSE trip_choice_cur;

  SET l_last_row_fetched = 0;

  SET l_booking_no = sf_get_booking_no(6);
  SET l_kelas_id   = sf_get_kelas_id(p_subkelas);
  SET l_kelas_code = sf_get_kelas_code(p_subkelas);
  SET l_subkelas_id = sf_get_subkelas_id(p_subkelas);
  SET l_subkelas_code = sf_get_subkelas_code(p_subkelas);
  SET l_channel_id = sf_get_channel_id(p_rqid);
  SET l_count_pax  = p_num_pax_adult + p_num_pax_child;
  SET l_trans_date = sysdate();

  CALL transactions_hold_add(NULL, -- in p_COACH_ID bigint(20),
                             l_trans_date, -- in p_TRANS_HOLD_DATE datetime,
                             l_booking_no, -- in p_BOOKING_NO varchar(20),
                             p_train_no, -- in p_TRIP_NO varchar(6),
                             l_pub_sch_id, -- in p_PUB_SCH_ID bigint(20),
                             l_channel_id, -- in p_CHANNEL_ID int(11),
                             l_vehicle_id, -- in p_VEHICLE_ID bigint(20),
                             l_vehicle_no, -- in p_VEHICLE_NO varchar(15),
                             l_vehicle_nm, -- in p_VEHICLE_NM varchar(50),
                             NULL, -- in p_COACH_CODE varchar(10),
                             NULL, -- in p_COACH_NM varchar(50),
                             l_stations_id_ori, -- in p_STATIONS_ID_ORI bigint(20),
                             l_stations_id_dest, -- in p_STATIONS_ID_DEST bigint(20),
                             l_originations_label, -- in p_ORIGINATIONS_LABEL varchar(5),
                             l_originations_nm, -- in p_ORIGINATIONS_NM varchar(50),
                             l_destinations_label, -- in p_DESTINATIONS_LABEL varchar(5),
                             l_destinations_nm, -- in p_DESTINATIONS_NM varchar(50),
                             p_depart, -- in p_DEPART_DATE datetime,
                             l_arrival_date, -- in p_ARRIVED_DATE datetime,
                             l_etd, -- in p_ETD time,
                             l_eta, -- in p_ETA time,
                             l_kelas_id, -- in p_KELAS_ID int(11),
                             l_kelas_code, -- in p_KELAS_CODE varchar(2),
                             l_subkelas_id, -- in p_SUBKELAS_ID int(11),
                             l_subkelas_code, -- in p_SUBKELAS_CODE varchar(2),
                             'Mr/Mrs', -- in p_CONTACT_TITLE varchar(10),
                             p_caller, -- in p_CONTACT_FIRST_NAME varchar(50),
                             NULL, -- in p_CONTACT_LAST_NAME varchar(50),
                             NULL, -- in p_CONTACT_ADDRESS_1 varchar(255),
                             NULL, -- in p_CONTACT_ADDRESS_2 varchar(255),
                             NULL, -- in p_CONTACT_PHONE_HOME varchar(20),
                             NULL, -- in p_CONTACT_PHONE_MOBILE varchar(20),
                             NULL, -- in p_CONTACT_EMAIL varchar(60),
                             p_num_pax_adult, -- in p_JUMLAH_DEWASA int(11),
                             p_num_pax_child, -- in p_JUMLAH_ANAK int(11),
                             0, -- in p_JUMLAH_INFANT int(11),
                             (p_num_pax_adult + p_num_pax_child) * 80000, -- in p_BALANCE decimal(12,2),
                             'N', -- in p_IS_CANCEL char(1),
                             NULL, -- in p_CANCEL_REASON text,
                             'R' -- in p_IS_STATUS char(1)
                                );

  SELECT trans_hold_id
  INTO   l_trans_hold_id
  FROM   transactions_hold
  WHERE  booking_no = l_booking_no;

  IF l_count_pax >= 1
  THEN
     IF p_num_pax_adult >= 1 -- [for adult passenger]
     THEN
        SET i            = 1;

       loop1:
        WHILE i <= p_num_pax_adult
        DO
           SET l_pax_adult_nm = sf_split_string(p_adult_nm, ',', i);
           SET l_adult_birthdate =
                  sf_split_string(p_adult_birtdate, ',', i);
           SET l_adult_mobile = sf_split_string(p_adult_mobile, ',', i);
           SET l_adult_id_no = sf_split_string(p_adult_id_no, ',', i);
           SET l_auto_seat_id =
                  sf_auto_seat_id(p_org,
                                  p_des,
                                  p_train_no,
                                  p_depart,
                                  p_num_pax_adult,
                                  p_num_pax_child,
                                  p_subkelas);

           IF l_auto_seat_id IS NOT NULL
           THEN
              SELECT coach_id,
                     coach_code,
                     coach_nm,
                     coach_seq,
                     seat_str_row,
                     seat_str_col,
                     seat_str_label
              INTO   l_coach_id,
                     l_coach_code,
                     l_coach_nm,
                     l_coach_seq,
                     l_seat_str_row,
                     l_seat_str_col,
                     l_seat_str_label
              FROM   seat_avail
              WHERE  seat_avail_id = l_auto_seat_id;
           END IF;


           -- pax data insert (adult passenger)
           CALL pax_add(1, -- in p_PAX_TYPE_ID int(11), 1=adult,2=child,3=infant
                        l_adult_id_no, -- in p_PAX_NO_ID varchar(20),
                        'Mr/Mrs', -- in p_PAX_TITLE varchar(10),
                        l_pax_adult_nm, -- in p_PAX_FIRST_NAME varchar(50),
                        NULL, -- in p_PAX_LAST_NAME varchar(50),
                        l_adult_birthdate, -- in p_PAX_BIRTHDAY date,
                        NULL, -- in p_PAX_ADDRESS_1 varchar(255),
                        NULL, -- in p_PAX_ADDRESS_2 varchar(255),
                        NULL, -- in p_PAX_PHONE_HOME varchar(20),
                        NULL, -- in p_PAX_PHONE_MOBILE varchar(20),
                        NULL, -- in p_PAX_EMAIL varchar(60),
                        NULL, -- in p_PAX_CODEZIP varchar(10),
                        NULL, -- in p_PAX_DESC text,
                        l_trans_date, -- in p_INSERT_DATE datetime,
                        NULL, -- in p_INSERT_USER_ID int(11),
                        l_trans_date, -- in p_UPDATE_DATE datetime,
                        NULL, -- in p_UPDATE_USER_ID int(11)
                        @last_id);

           SET l_pax_id     = @last_id;

           SELECT pax_no_id,
                  pax_title,
                  pax_first_name,
                  pax_last_name,
                  pax_birthday,
                  pax_address_1,
                  pax_address_2,
                  pax_phone_home,
                  pax_phone_mobile,
                  pax_email,
                  pax_codezip,
                  pax_desc
           INTO   l_pax_no_id,
                  l_pax_title,
                  l_pax_first_name,
                  l_pax_last_name,
                  l_pax_birthday,
                  l_pax_address_1,
                  l_pax_address_2,
                  l_pax_phone_home,
                  l_pax_phone_mobile,
                  l_pax_email,
                  l_pax_codezip,
                  l_pax_desc
           FROM   pax
           WHERE  pax_id = l_pax_id;

           -- transactions add

           CALL transactions_add(
                                 l_booking_no, -- in p_BOOKING_NO varchar(20),
                                 p_train_no, -- in p_TRIP_NO varchar(6)
                                 l_auto_seat_id, -- in p_SEAT_AVAIL_ID bigint(20),
                                 l_pax_id, -- in p_PAX_ID bigint(20),
                                 l_trans_hold_id, -- in p_TRANS_HOLD_ID bigint(20),
                                 NULL, -- in p_BANK_ID int(11),
                                 NULL, -- in p_PAY_TYPE_ID int(11),
                                 NULL, -- in p_FARES_ID bigint(20),
                                 NULL, -- in p_PAX_TYPE_ID int(11),
                                 l_trans_date, -- in p_TRANS_DATE datetime,
                                 l_pub_sch_id, --         p_PUB_SCH_ID,
                                 l_pub_sch_dtl_id, --         p_PUB_SCH_DTL_ID,
                                 NULL, --         p_PUB_SCH_STANFORM_ID,
                                 NULL, -- in p_PAYMENT_NO varchar(20),
                                 NULL, -- in p_PAYMENT_TYPE_CODE varchar(10),
                                 l_vehicle_id, -- in p_VEHICLE_ID bigint(20),
                                 l_vehicle_no, -- in p_VEHICLE_NO varchar(15),
                                 l_vehicle_nm, -- in p_VEHICLE_NM varchar(50),
                                 l_coach_id, --         p_COACH_ID,
                                 l_coach_code, --         p_COACH_CODE,
                                 l_coach_nm, --         p_COACH_NM,
                                 l_coach_seq, -- in p_COACH_SEQ int(11),
                                 l_seat_str_row, -- in p_SEAT_STR_ROW int(11),
                                 l_seat_str_col, -- in p_SEAT_STR_COL int(11),
                                 l_seat_str_label, -- in p_SEAT_STR_LABEL int(11),
                                 l_eta, -- in p_ETA time,
                                 l_etd, -- in p_ETD time,
                                 l_kelas_id, -- in p_KELAS_ID int(11),
                                 l_subkelas_id, -- in p_SUBKELAS_ID int(11),
                                 p_depart, -- in p_DEPART_DATE datetime,
                                 l_arrival_date, -- in p_ARRIVAL_DATE datetime,
                                 l_stations_id_ori, -- in p_STATIONS_ID_ORI bigint(20),
                                 l_stations_id_dest, -- in p_STATIONS_ID_DEST bigint(20),
                                 l_originations_label, --  in p_ORIGINATIONS_LABEL varchar(5),
                                 l_originations_nm, -- in p_ORIGINATIONS_NM varchar(50),
                                 l_destinations_label, -- in p_DESTINATIONS_LABEL varchar(5),
                                 l_destinations_nm, -- in p_DESTINATIONS_NM varchar(50),
                                 l_pax_title, -- in p_PAX_TITLE varchar(10),
                                 l_pax_first_name, -- in p_PAX_FIRST_NAME varchar(50),
                                 l_pax_last_name, -- in p_PAX_LAST_NAME varchar(50),
                                 l_pax_phone_home, -- in p_PHONE_HOME varchar(20),
                                 l_pax_phone_mobile, -- in p_PHONE_MOBILE varchar(20),
                                 NULL, -- in p_DESC_TRANS text,
                                 NULL, -- in p_IS_CANCEL char(1),
                                 NULL, -- in p_CANCEL_REASON text,
                                 'R', -- in p_BOOK_STATUS char(1),
                                 'N', -- in p_IS_PRINTING char(1),
                                 NULL, -- in p_PRINT_COUNT int(11),
                                 @last_trans_id);
           SET i            = i + 1;
           SET l_trans_id   = @last_trans_id;
           CALL transactions_activity_add(l_trans_id, -- in p_TRANS_ID bigint(20),
                                          sysdate(), -- in p_TRANS_DTL_DATE datetime,
                                          'RESERVE BOOKING', -- in p_TRANS_DTL_DESC text,
                                          'R', -- in p_IS_STATUS char(1),
                                          NULL, -- in p_CANCEL_REASON text,
                                          sysdate(), -- in p_INSERT_DATE datetime,
                                          l_channel_id, -- in p_INSERT_USER_ID int(11),
                                          NULL, -- in p_UPDATE_DATE datetime,
                                          NULL -- in p_UPDATE_USER_ID int(11)
                                              );
        END WHILE loop1;
     END IF;

     IF p_num_pax_child >= 1 --  for child passenger
     THEN
        SET j            = 1;

       loop2:
        WHILE j <= p_num_pax_child
        DO
           SET l_child_nm   = sf_split_string(p_child_nm, ',', j);
           SET l_child_birth = sf_split_string(p_child_birth, ',', j);

           SET l_auto_seat_id =
                  sf_auto_seat_id(p_org,
                                  p_des,
                                  p_train_no,
                                  p_depart,
                                  p_num_pax_adult,
                                  p_num_pax_child,
                                  p_subkelas);

           IF l_auto_seat_id IS NOT NULL
           THEN
              SELECT coach_id,
                     coach_code,
                     coach_nm,
                     coach_seq,
                     seat_str_row,
                     seat_str_col,
                     seat_str_label
              INTO   l_coach_id,
                     l_coach_code,
                     l_coach_nm,
                     l_coach_seq,
                     l_seat_str_row,
                     l_seat_str_col,
                     l_seat_str_label
              FROM   seat_avail
              WHERE  seat_avail_id = l_auto_seat_id;
           END IF;

           -- pax data insert (child passenger)
           CALL pax_add(2, -- in p_PAX_TYPE_ID int(11), 1=adult,2=child,3=infant
                        NULL, -- in p_PAX_NO_ID varchar(20),
                        NULL, -- in p_PAX_TITLE varchar(10),
                        l_child_nm, -- in p_PAX_FIRST_NAME varchar(50),
                        NULL, -- in p_PAX_LAST_NAME varchar(50),
                        l_child_birth, -- in p_PAX_BIRTHDAY date,
                        NULL, -- in p_PAX_ADDRESS_1 varchar(255),
                        NULL, -- in p_PAX_ADDRESS_2 varchar(255),
                        NULL, -- in p_PAX_PHONE_HOME varchar(20),
                        NULL, -- in p_PAX_PHONE_MOBILE varchar(20),
                        NULL, -- in p_PAX_EMAIL varchar(60),
                        NULL, -- in p_PAX_CODEZIP varchar(10),
                        NULL, -- in p_PAX_DESC text,
                        l_trans_date, -- in p_INSERT_DATE datetime,
                        NULL, -- in p_INSERT_USER_ID int(11),
                        l_trans_date, -- in p_UPDATE_DATE datetime,
                        NULL, -- in p_UPDATE_USER_ID int(11)
                        @last_id);

           SET l_pax_id     = @last_id;

           SELECT pax_no_id,
                  pax_title,
                  pax_first_name,
                  pax_last_name,
                  pax_birthday,
                  pax_address_1,
                  pax_address_2,
                  pax_phone_home,
                  pax_phone_mobile,
                  pax_email,
                  pax_codezip,
                  pax_desc
           INTO   l_pax_no_id,
                  l_pax_title,
                  l_pax_first_name,
                  l_pax_last_name,
                  l_pax_birthday,
                  l_pax_address_1,
                  l_pax_address_2,
                  l_pax_phone_home,
                  l_pax_phone_mobile,
                  l_pax_email,
                  l_pax_codezip,
                  l_pax_desc
           FROM   pax
           WHERE  pax_id = l_pax_id;

           CALL transactions_add(l_booking_no, -- in p_BOOKING_NO varchar(20),
                                 p_train_no, -- in p_TRIP_NO varchar(6)
                                 l_auto_seat_id, -- in p_SEAT_AVAIL_ID bigint(20),
                                 l_pax_id, -- in p_PAX_ID bigint(20),
                                 l_trans_hold_id, -- in p_TRANS_HOLD_ID bigint(20),
                                 NULL, -- in p_BANK_ID int(11),
                                 NULL, -- in p_PAY_TYPE_ID int(11),
                                 NULL, -- in p_FARES_ID bigint(20),
                                 NULL, -- in p_PAX_TYPE_ID int(11),
                                 l_trans_date, -- in p_TRANS_DATE datetime,
                                 l_pub_sch_id, --         p_PUB_SCH_ID,
                                 l_pub_sch_dtl_id, --         p_PUB_SCH_DTL_ID,
                                 NULL, --  in p_PUB_SCH_STANFORM_ID,
                                 NULL, -- in p_PAYMENT_NO varchar(20),
                                 NULL, -- in p_PAYMENT_TYPE_CODE varchar(10),
                                 l_vehicle_id, -- in p_VEHICLE_ID bigint(20),
                                 l_vehicle_no, -- in p_VEHICLE_NO varchar(15),
                                 l_vehicle_nm, -- in p_VEHICLE_NM varchar(50),
                                 l_coach_id, --         p_COACH_ID,
                                 l_coach_code, --         p_COACH_CODE,
                                 l_coach_nm, --         p_COACH_NM,
                                 l_coach_seq, -- in p_COACH_SEQ int(11),
                                 l_seat_str_row, -- in p_SEAT_STR_ROW int(11),
                                 l_seat_str_col, -- in p_SEAT_STR_COL int(11),
                                 l_seat_str_label, -- in p_SEAT_STR_LABEL int(11),
                                 l_eta, -- in p_ETA time,
                                 l_etd, -- in p_ETD time,
                                 l_kelas_id, -- in p_KELAS_ID int(11),
                                 l_subkelas_id, -- in p_SUBKELAS_ID int(11),
                                 p_depart, -- in p_DEPART_DATE datetime,
                                 l_arrival_date, -- in p_ARRIVAL_DATE datetime,
                                 l_stations_id_ori, -- in p_STATIONS_ID_ORI bigint(20),
                                 l_stations_id_dest, -- in p_STATIONS_ID_DEST bigint(20),
                                 l_originations_label, --  in p_ORIGINATIONS_LABEL varchar(5),
                                 l_originations_nm, -- in p_ORIGINATIONS_NM varchar(50),
                                 l_destinations_label, -- in p_DESTINATIONS_LABEL varchar(5),
                                 l_destinations_nm, -- in p_DESTINATIONS_NM varchar(50),
                                 l_pax_title, -- in p_PAX_TITLE varchar(10),
                                 l_pax_first_name, -- in p_PAX_FIRST_NAME varchar(50),
                                 l_pax_last_name, -- in p_PAX_LAST_NAME varchar(50),
                                 l_pax_phone_home, -- in p_PHONE_HOME varchar(20),
                                 l_pax_phone_mobile, -- in p_PHONE_MOBILE varchar(20),
                                 NULL, -- in p_DESC_TRANS text,
                                 NULL, -- in p_IS_CANCEL char(1),
                                 NULL, -- in p_CANCEL_REASON text,
                                 'R', -- in p_BOOK_STATUS char(1),
                                 'N', -- in p_IS_PRINTING char(1),
                                 NULL, -- in p_PRINT_COUNT int(11),
                                 @last_trans_id);
           SET j            = j + 1;
           SET l_trans_id   = @last_trans_id;
           CALL transactions_activity_add(l_trans_id, -- in p_TRANS_ID bigint(20),
                                          sysdate(), -- in p_TRANS_DTL_DATE datetime,
                                          'RESERVE BOOKING', -- in p_TRANS_DTL_DESC text,
                                          'R', -- in p_IS_STATUS char(1),
                                          NULL, -- in p_CANCEL_REASON text,
                                          sysdate(), -- in p_INSERT_DATE datetime,
                                          l_channel_id, -- in p_INSERT_USER_ID int(11),
                                          NULL, -- in p_UPDATE_DATE datetime,
                                          NULL -- in p_UPDATE_USER_ID int(11)
                                              );
        END WHILE loop2;
     END IF;
  END IF;

  RETURN l_trans_hold_id; END;

但是当我运行此功能时 - &gt; select sf_booking('KLN','MDN','20131012','U15a',2,1,'A','jonie','ivhas,gavas','19900302,19901002','0815123456,08349857345','U77783,K77234','ronas','20100606','5EB9FE68-8915-11E0-BEA0-C9892766ECF2')它的返回错误:

程序执行失败 1415 - 不允许从函数

返回结果集

任何吸烟?谢谢......

1 个答案:

答案 0 :(得分:0)

你不能从MySQL中的存储函数返回结果集,我在这里看不到...但是你试图从这个函数里面CALL几个存储过程......这意味着这些过程以及它们调用的任何过程都不允许返回结果集,因为这最终会导致此函数返回结果集...您无法做到。

基于此代码的复杂性以及它看起来要做的事情,这可能应该被编写为存储过程本身,这将避免整个问题。