原文: PB 幫助 本文擬以 SYBASE ASE 10.X 和 11.X 數據庫 為例,說明如何在 PB 腳本當中獲取存儲過程的返回值。作為一個存儲過程,其輸出的結果數據可" name="description" />

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何在PB腳本當中獲取存儲過程的返回值(翻譯)

    發表于:2007-05-25來源:作者:點擊數: 標簽:腳本當中何在過程獲取
    MI LY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原文: PB 幫助 本文擬以 SYBASE ASE 10.X 和 11.X 數據庫 為例,說明如何在 PB 腳本當中獲取存儲過程的返回值。作為一個存儲過程,其輸出的結果數據可

    MILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原文:PB幫助

     

    本文擬以SYBASE ASE 10.X11.X數據庫為例,說明如何在PB腳本當中獲取存儲過程的返回值。作為一個存儲過程,其輸出的結果數據可能包括三類:SELECT結果集、RETURN結果、OUTPUT參數。盡管輸出方式眾多,但PB腳本僅僅借助簡單的FETCH…INTO…語句即可全部獲取這些輸出數據,具體方式如下:

    (一)在SYBASE ASE 10.X11.X數據庫當中創建一個存儲過程deptroster,其有一個輸入參數@deptno、兩個輸出參數@totsal @avgsal、一個RETURN@number_of_emps以及包含職員姓名和工資的SELECT結果集,可見除了輸入參數@deptno外,其他均為輸出數據,我們需要在PB腳本中獲取,具體代碼如下:

     

    CREATE PROCEDURE deptroster @deptno integer,

    @totsal double precision output,

           @avgsal double precision output

    AS

    DECLARE @number_of_emps integer

    SELECT emp_fname, emp_lname, salary FROM employee

           WHERE dept_id = @deptno

    SELECT @totsal = sum(salary),

           @avgsal = avg(salary),

           @number_of_emps = COUNT(*) FROM employee

           WHERE dept_id = @deptno

    RETURN @number_of_emps;

     

    (二)PB腳本當中我們需要捕獲SELECT結果集、RETURN值和兩個輸出參數,其輸出順序也是按照“SELECT結果集、RETURN值、輸出參數”順序輸出,具體代碼如下:

     

    integer fetchcount = 0

    long    lDeptno, rc

    string  fname, lname

    double  dSalary, dTotSal, dAvgSal

    lDeptno = 100

     

    //此處聲明存儲過程名稱

    DECLARE deptproc PROCEDURE FOR

           @rc = dbo.deptroster

           @deptno = :lDeptno,

           @totsal = 0 output,

           @avgsal = 0 output

    USING SQLCA;

     

    //此處開始執行存儲過程

    EXECUTE deptproc;

     

    //判斷執行結果

    CHOOSE CASE SQLCA.sqlcode

    CASE 0

           //如果返回0則表示執行成功,至少存在一個SELECT結果集

           //借助LOOP循環開始捕獲這個SELECT結果集

           DO

                  FETCH deptproc INTO :fname, :lname, :dSalary;

                  CHOOSE CASE SQLCA.sqlcode

                  CASE 0

                         fetchcount++

                  CASE 100

                         MessageBox ("End of Result Set",  &

                                string (fetchcount) " rows fetched")

                  CASE -1

                         MessageBox ("Fetch Failed",  &

                                string (SQLCA.sqldbcode) " = "  &

    SQLCA.sqlerrtext)

                  END CHOOSE

           LOOP WHILE SQLCA.sqlcode = 0

     

    // 再單獨執行一次FETCH語句以獲取RETURN值和OUTPUT參數

           FETCH deptproc INTO :rc, :dTotSal, :dAvgSal;

           CHOOSE CASE SQLCA.sqlcode

           CASE 0

                  MessageBox ("Fetch Return Value and Output"  &

                         "Parms SUCCESSFUL", "Return Value is: "  &

                         string (rc)  &

                         "~r~nTotal Salary: " string (dTotSal)  &

                         "~r~nAverage Sal:  " string (dAvgSal))

           CASE 100

                  MessageBox ("Return Value and Output Parms"  &

                         "NOT FOUND", "")

           CASE ELSE

                  MessageBox ("Fetch Return Value and Output"  &

    "Parms FAILED", "SQLDBCode is "  &

                         string (SQLCA.sqldbcode) " = "  &

                         SQLCA.sqlerrtext)

           END CHOOSE

     

    //此處關閉存儲過程

    CLOSE deptproc;

    CASE 100

     

    // 如果返回100,則表示沒有返回結果集.

           // 此時不需要單獨執行CLOSE語句.

           MessageBox ("Execute Suclearcase/" target="_blank" >ccessful", "No result set")

     

    CASE ELSE

    //其他情況則表示存儲過程執行失敗,提示用戶即可

    MessageBox ("Execute Failed",  &

                  string (SQLCA.sqldbcode) " = "  &

                  SQLCA.sqlerrtext)

     

    END CHOOSE

     

    至此本文結束。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>