请问大家 有没有 oracle储存过程得好例子 发一下,非常感谢!!

解决方案 »

  1.   

    没有比Oracle® Database PL/SQL User's Guide and Reference 更好的了!!
      

  2.   

    Sub ProcedureX()
        Dim dbs As Database, rst As Recordset    Dim qdf As QueryDef, strSql As String        ' 在您的计算机中修改此行使其正确指到 Northwind 的路径。    Set dbs = OpenDatabase("Northwind.mdb")    ' 对运费超过 $100 的订单,        strSql = "PROCEDURE CategoryList; " _        & "SELECT DISTINCTROW CategoryName, " _        & "CategoryID FROM Categories " _        & "ORDER BY CategoryName;"        ' 创建基于 SQL 语句的 QueryDef 的名称。    '     Set qdf = dbs.CreateQueryDef("NewQry", strSql)
        ' 创建暂时的快照类型记录集。    Set rst = qdf.OpenRecordset(dbOpenSnapshot)    ' populateRecordset。    rst.MoveLast                ' 调用 EnumFields 来打印记录集的内容。    '传递记录集对象和要求的字符宽度。    '     EnumFields rst, 15        ' 删除 QueryDef 因为这是一个演示。    '     dbs.QueryDefs.Delete "NewQry"        dbs.Close
    End Sub
      

  3.   

    CREATE OR REPLACE PROCEDURE ProName (
        inPara    IN  CHAR
    ) IS/******************************************************************************
       NAME     :注释
       PURPOSE  :    REVISIONS:
       Ver        Date        Author           Description
       ---------  ----------  ---------------  ------------------------------------
      
    ******************************************************************************//** 1.变量定义  */ 
    BEGIN/** 2.过程主体 */  COMMIT;/** 3.SQL语句的出错处理  */EXCEPTION  WHEN NO_DATA_FOUND THEN
          WHEN OTHERS THEN
       
        ROLLBACK;
        RAISE;END ProName ;
    /
    尽供参考,其中1.变量定义中定义你在存储过程中需要的变量,eg:t_todate  CHAR(10); 2.过程主体中,写入你要进行的操作。
      

  4.   

    create or replace procedure Prod_Report_Good_Rate
    (
    plines Varchar,
    pdate1 Date,
    pdate2 Date,
    ptable out KL_Data.Tempcursor
    )
    as
       
    Begin
       If plines>'0' Then
          Open ptable for
          Select mdate,a.line,c.name,teams,a.wrkno,sname,sum(mqtys) mq,sum(gqtys) gq,sum(bqtys) bq,
                 Max(round((totals)*100/width,2)) pcent,round(sum(gqtys)*100/sum(mqtys),2) mcent,
                 (Case teams When 1 Then '白班' When 2 Then '中班' When 3 Then '夜班' End) teamname
            From prod_make_head a
            Left Join prod_work_head b On b.wrkno=a.wrkno
            Left Join comm_line c On c.code=a.line
            Where mdate Between pdate1 And pdate2 And a.line=plines And mqtys>0
            Group By mdate,a.line,c.name,teams,a.wrkno,sname
            Order By mdate,teams;
       Else
          Open ptable for
          Select mdate,a.line,c.name,teams,a.wrkno,sname,sum(mqtys) mq,sum(gqtys) gq,sum(bqtys) bq,
           Max(round((totals)*100/width,2)) pcent,round(sum(gqtys)*100/sum(mqtys),2) mcent,
        --xl update 20080716         Max(round((width-totals)*100/width,2)) pcent,round(sum(gqtys)*100/sum(mqtys),2) mcent,
                 (Case teams When 1 Then '白班' When 2 Then '中班' When 3 Then '夜班' End) teamname
            From prod_make_head a
            Left Join prod_work_head b On b.wrkno=a.wrkno
            Left Join comm_line c On c.code=a.line
            Where mdate Between pdate1 And pdate2 And mqtys>0
            Group By mdate,a.line,c.name,teams,a.wrkno,sname
            Order By a.line,mdate,teams;
       End If;
    end;