亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

用C#、JAVA一次性取出存儲過程中的各種返回值

系統 1742 0
本文來自CSDN博客http://blog.csdn.net/liushengmz/archive/2010/04/29/5541986.aspx

問題:在存儲過程中,有時會遇到比較變態的東西,如一個存儲過程中有output返回值,有return返回值,還有查詢的返回值TABLE,遇到這樣的存儲過程真是郁悶,一次性把所有的返回值取出來還真的有點麻煩。

1、? 首先來看這個存儲過程吧
    CREATE  PROCEDURE ParaTest

@paraout varchar(20) output

AS 

BEGIN

   SET NOCOUNT ON

   SELECT * FROM USERS

   SELECT @paraout = 'outputvalue'   

   RETURN 10

END
  



為了方便大家看得更加清清楚楚,我已經將數據賦值寫得很直觀的了。USERS是一個表

在sql中要取得這個存儲過程的返回值可以用以下方式
    DECLARE @paraoutput varchar(20)

DECLARE @parareturn varchar(20)

EXEC @parareturn= ParaTest @paraout = @paraoutput output

SELECT @paraoutput AS 'output',@parareturn AS 'return'
  



結果如下

用C#、JAVA一次性取出存儲過程中的各種返回值


2、? 用C#取得返回值的方法如下(不做解釋了,很簡單的)

???????
     string stroutput = "";

            string strreturn = "";



            string conStr = "Server=.;DataBase=Test;Uid=sa;Pwd=";            

            SqlConnection conn = new SqlConnection(conStr);

            conn.Open();           

            SqlCommand cmd = new SqlCommand("ParaTest",conn);

            cmd.CommandType = CommandType.StoredProcedure;



            SqlParameter spa = new SqlParameter("@paraout",SqlDbType.VarChar,20);

            spa.Direction = ParameterDirection.Output;

            cmd.Parameters.Add(spa);



            SqlParameter spareturn = new SqlParameter("@return", SqlDbType.VarChar,10);

            spareturn.Direction = ParameterDirection.ReturnValue;

            cmd.Parameters.Add(spareturn);



            cmd.ExecuteNonQuery();

            stroutput = cmd.Parameters["@paraout"].Value.ToString();

            strreturn = cmd.Parameters["@return"].Value.ToString();

            DataTable dt = new DataTable();



            SqlDataAdapter sda = new SqlDataAdapter(cmd);

            sda.Fill(dt);



            Text_ParaReturn.Text = "output value:" + stroutput + ";return value:" + strreturn;

            dgv_ParaSet.DataSource = dt;


            sda.Dispose();

            cmd.Dispose();

            conn.Dispose();
  

結果如下:

用C#、JAVA一次性取出存儲過程中的各種返回值


3、? JAVA取得返回值的方法如下

    public static void main(String[] args)

    {

        new com.microsoft.sqlserver.jdbc.SQLServerDriver();

        String strOutput = "";

        String strReturn = "";

        Connection conn = null;

        CallableStatement cstmt = null;

        ResultSet rs = null;

    String conUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=Test;User=sa;pwd=";

        try

        {

            conn = DriverManager.getConnection(conUrl); 

            cstmt = conn.prepareCall("{ ? = call ParaTest( ? ) }");

            cstmt.registerOutParameter(1,Types.VARCHAR);

            cstmt.registerOutParameter(2,Types.VARCHAR);

            rs = cstmt.executeQuery();

            while(rs.next())

            {

                System.out.println(rs.getInt(1) + "---" + rs.getString(2));

            }

            strReturn = cstmt.getString(1);

            strOutput = cstmt.getString(2);         

            System.out.println("OutPut:" + strOutput+"---Return:"+strReturn);               rs.close();

            cstmt.close();

            conn.close();

        }

        catch(Exception ex)

        {

            ex.printStackTrace();

        }

    }
  

結果如下:

1---fsdaf

2---f

3---sd

OutPut:outputvalue---Return:10



4、? 備注:

在上面的代碼中,用C#取返回值的時候,其實它是執行了兩次存儲過程的,cmd.ExecuteNonQuery();這里執行一次,sda.Fill(dt);也執行了一次。而JAVA代碼取得返回值中,它僅僅只是招行了一次存儲過程,就拿到了全部的數據,JAVA主要是使用了游標進行取數據,而C#是一次性取來放到DATATABLE這個容器里面去,中間C#幫我們做了一次數據提取,估計也是用游標取得的數據。不管怎樣,終究是取到所有數據了。


本文來自CSDN博客http://blog.csdn.net/liushengmz/archive/2010/04/29/5541986.aspx

用C#、JAVA一次性取出存儲過程中的各種返回值


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品一区二区三区免费视频 | 可以免费观看的一级片 | 国产片欧美片亚洲片久久综合 | 国产免费看 | 日韩免费黄色片 | 色接久久 | 天天色综合三 | 色综合亚洲七七久久桃花影院 | aaa级精品久久久国产片 | 国产免费人人看大香伊 | 色爱b| 97欧美精品一区二区三区 | 一本色道久久爱88av俺来也 | 久久久亚洲天堂 | 久久久久欧美精品 | 日本不卡三级 | 国产精品久久久久久久久久妇女 | 在线精品日韩一区二区三区 | 中文字幕在线观看一区二区三区 | 一线毛片| 嘿咻成人免费视频欧美激情 | 国产在线观看a | 国产成人综合视频 | 久久精品亚洲牛牛影视 | 久久久久久久免费 | 97色老99久久九九爱精品 | 欧美成人免费tv在线播放 | 97影院支持微信微博观看 | 中文字幕日本在线观看 | 天天爽夜夜爽天天做夜夜做 | 国产自愉自愉全免费高清 | 免费不卡毛片 | 午夜一级毛片 | 亚洲欧美日韩中文高清一 | 国内精品久久久久影院中国 | 亚洲欧洲日韩国产一区二区三区 | 亚洲韩精品欧美一区二区三区 | 99色在线视频 | 欧美日韩中文一区二区三区 | 国产嘿咻视频 | 日产一一到六区麻豆 |