源代码如下:create or replace procedure forums_PrivateMessages_Get 
(  v_UserID in integer,
   v_PrivateMessageType in integer, -- 1 已经发送, 2 收到的私人消息
   v_unreadOnly in number,
   v_unreplyOnly in number,
   v_PageSize in integer,
   v_PageIndex in integer)
is
  v_PageLowerBound integer;
  v_PageUpperBound integer;
  v_string1 varchar2(500);
  v_MessageID integer;
begin
 --DECLARE v_RowsToReturn int -- First set the rowcount
 --SET v_RowsToReturn = v_PageSize * (v_PageIndex + 1)
 --SET ROWCOUNT v_RowsToReturn -- Set the page bounds
  v_PageLowerBound := v_PageSize * v_PageIndex;
  v_PageUpperBound := v_PageLowerBound + v_PageSize + 1; -- Create a temp table to store the select results
   execute immediate 'CREATE GLOBAL TEMPORARY TABLE PageIndex 
   (
    IndexID int IDENTITY (1, 1) NOT NULL,
    MessageID int
   )ON COMMIT delete ROWS';
  
   IF v_PrivateMessageType=1 then
    IF v_unreadOnly=1 AND v_unreplyOnly=1 then
     v_string1 :='INSERT INTO PageIndex (MessageID)
     select MessageID from forums_PrivateMessages where SenderUserID=v_UserID AND IsSenderDelete=0 AND IsRead=0 AND IsReply=0 ORDER BY CreateTime DESC' ;--IsRead --IsReply
    ELSIF v_unreadOnly=1 then
     v_string1 :='INSERT INTO PageIndex (MessageID)
      select MessageID into v_MessageID  from forums_PrivateMessages where SenderUserID=v_UserID AND IsSenderDelete=0 AND IsRead=0 ORDER BY CreateTime DESC';
    ELSIF v_unreplyOnly=1 then 
    v_string1 :='INSERT INTO PageIndex (MessageID)  
     select MessageID into v_MessageID  from forums_PrivateMessages where SenderUserID=v_UserID AND IsSenderDelete=0 AND IsReply=0 ORDER BY CreateTime DESC';
    ELSE 
     v_string1 :='INSERT INTO PageIndex (MessageID)
     select MessageID into v_MessageID  from forums_PrivateMessages where SenderUserID=v_UserID AND IsSenderDelete=0 ORDER BY CreateTime DESC';
    end if;
   ELSIF v_PrivateMessageType=2 then 
    
    IF v_unreadOnly=1 AND v_unreplyOnly=1 then
     v_string1 :='INSERT INTO PageIndex (MessageID)
     select MessageID into v_MessageID  from forums_PrivateMessages where RecipientUserID=v_UserID AND IsRecipientDelete=0 AND IsRead=0 AND IsReply=0 ORDER BY CreateTime DESC ';--IsRead --IsReply
    ELSIF v_unreadOnly=1 then
     v_string1 :='INSERT INTO PageIndex (MessageID)
     select MessageID into v_MessageID  from forums_PrivateMessages where RecipientUserID=v_UserID AND IsRecipientDelete=0 AND IsRead=0 ORDER BY CreateTime DESC';
    ELSIF v_unreplyOnly=1 then
     v_string1 :='INSERT INTO PageIndex (MessageID)
     select MessageID into v_MessageID  from forums_PrivateMessages where RecipientUserID=v_UserID AND IsRecipientDelete=0 AND IsReply=0 ORDER BY CreateTime DESC';
    ELSE 
     v_string1 :='INSERT INTO PageIndex (MessageID) 
     select MessageID into v_MessageID  from forums_PrivateMessages where RecipientUserID=v_UserID AND IsRecipientDelete=0 ORDER BY CreateTime DESC';
    end if;
  end if; 
  
  execute immediate(v_string1); 
  
  execute immediate 'SELECT * FROM forums_PrivateMessages pm INNER JOIN PageIndex p ON pm.MessageID = p.MessageID 
   WHERE p.IndexID > v_PageLowerBound AND p.IndexID < v_PageUpperBound 
   ORDER BY p.IndexID';
  
  execute immediate' SELECT Count(*) FROM PageIndex';
  
  execute immediate 'DROP TABLE PageIndex';end forums_PrivateMessages_Get;错误:Error: Hint: Parameter 'v_UserID' is declared but never used in 'forums_PrivateMessages_Get'
Line: 2
Text: (  v_UserID in integer,Error: Hint: Variable 'v_MessageID' is declared but never used in 'forums_PrivateMessages_Get'
Line: 12
Text: v_MessageID integer;Error: Hint: Value assigned to 'v_PageUpperBound' never used in 'forums_PrivateMessages_Get'
Line: 24
Text: v_PageUpperBound := v_PageLowerBound + v_PageSize + 1;

解决方案 »

  1.   

    v_string1 :='INSERT INTO PageIndex (MessageID)
         select MessageID from forums_PrivateMessages where SenderUserID=v_UserID AND IsSenderDelete=0 AND IsRead=0 AND IsReply=0 ORDER BY CreateTime DESC' ;--IsRead --IsReply===================v_UserID should be wrote like this  ''||v_UserID||''change all the parameter ...
      

  2.   

    改成 ''||v_UserID||''以后还是这样的错误啊:::怎么办???
    compilation errors for PROCEDURE JSJL.FORUMS_PRIVATEMESSAGES_GETError: Hint: Parameter 'v_UserID' is declared but never used in 'forums_PrivateMessages_Get'
    Line: 2
    Text: (  v_UserID in integer,Error: Hint: Variable 'v_MessageID' is declared but never used in 'forums_PrivateMessages_Get'
    Line: 12
    Text: v_MessageID integer;Error: Hint: Value assigned to 'v_PageUpperBound' never used in 'forums_PrivateMessages_Get'
    Line: 24
    Text: v_PageUpperBound := v_PageLowerBound + v_PageSize + 1;
      

  3.   

    呵呵
    问题解决了
     不是 ''||v_UserID||''
    应该是 '||v_UserID||'
      

  4.   

    问题解决了  
     不是  ''  &brvbar;  &brvbar;v_UserID  &brvbar;  &brvbar;''  
    应该是  '  &brvbar;  &brvbar;v_UserID  &brvbar;  &brvbar;' 那些是''|| ||''