1

プロジェクト用に 2 つのストアド プロシージャを作成しようとしていますが、両方のテーブルでエラーが発生します。

Member (MemberID, MembershipID, name, city.....)
RentalQueue (MovieID, DVDID, DateAdded)
DVD (DVID ID, Name..)
Rental(RentalID, MemberID, DVDID RequestDate,ShippedDate,ReturnDate)

2 つのストアド プロシージャの説明とコード

1.) 顧客のレンタル キューにタイトルを追加する PL/SQL sp。このプロシージャは、IN パラメータとして、顧客 ID と映画タイトル ID、および映画がキューにある場所の場所を取得する必要があります。この手順では、タイトルが重複して追加されないようにする必要もあります。コードにエラー処理を追加する必要があります。

Create procedure add_to_queue (customerID number, titleID number) as
v_count number;
begin
        select count(memberid,dvdid) 
        from rentalqueue 
        where memberid=customerid and dvdid=titleid;

     if v_count = 1 then
        raise_application_error(20000, 'This film is already  in the rentalqueue for 
        this user');
     else 
          execute immediate ’insert into rentalqueue          
          values(’||customerid||’,’||titleid||’,’||sysdate||’)’;
     end if;
end;

2.) 出荷が要求されると、顧客のレンタル キューからタイトルを削除する PL/SQL ストアド プロシージャ。このプロシージャは、顧客 ID と映画タイトル ID を IN パラメータとして使用する必要があります。

    Create procedure delete_from_queue (customerID number, titleID number) as
    v_count number;
begin
        select count(memberid,dvdid) 
        from rentalqueue 
        where memberid=customerid and dvdid=titleid;

        if v_count = 1 then
           execute immediate ’delete from rentalqueue 
           where memberid=’||customerid||’ and dvdid=’||titleid;
        else 
        raise_application_error(20000, 'This film was not in the rentalqueue for this  
        user');
       end if;
 end;

コンパイルエラーの両方で取得するのは以下です。最初の2つのエラーは、私が行うSELECTステートメントで何かをしなければならないことを知っていますが、何が間違っているのかわかりません。

Error(4,20): PL/SQL: SQL Statement ignored
Error(4,27): PL/SQL: ORA-00909: invalid number of arguments
Error(6,41): PLS-00103: Encountered the symbol "’" when expecting one of the
    following:     ( - + case mod new not null <an identifier>    
<a double-quoted delimited-identifier> <a bind variable>    continue avg count current
 exists max min prior sql stddev    sum variance execute forall merge time timestamp 
interval    date <a string literal with character set specification>
    <a number> <a single-quoted SQL string> pipe    <an alternatively-quoted string
 literal with character set specification>    <an alternatively
4

2 に答える 2

3
于 2012-09-18T16:14:55.727 に答える
0
于 2012-09-18T16:32:24.937 に答える