2012-10-31 49 views
0

我有一個vb.net應用程序,它使用應該返回一個值的存儲過程將記錄插入到數據庫表中。這個存儲過程是由其他人設置的,最初被鏈接到一個web服務,我的應用程序通過該web服務進行插入,並在返回的xml中獲取返回值。我現在可以訪問數據庫表,不知道如何在我的vb.net方法中接收返回值。從存儲過程得到沒有輸出參數的返回值

SQl存儲過程片段;

 @urlname varchar(500), 
@siteid varchar(16), 
@origin varchar(50), 
@queryid varchar(25) 
    AS 
SET NOCOUNT ON; 
declare @cnt int 
declare @serverip varchar(16) 
declare @mincnt int 
declare @siteservercnt int 
select @cnt=COUNT(*) from sites 
     where [email protected] 
if @cnt = 0 
    begin 
    insert into sites (urlname,siteid,exported,origin,queryid) 
    values(@urlname,@siteid,1,@origin,@queryid) 
    select @siteservercnt = COUNT(*) from siteserverip where [email protected] 
    if @siteservercnt=0 
     begin 
      select top 1 @mincnt=COUNT(*),@serverip=serverip from siteserverip 
     group by serverip 
     order by COUNT(*) 
     select top 1 @mincnt=sitecount, 
         @serverip=serverip from serveripcounts 
     order by sitecount 
     insert into siteserverip values(@siteid,@serverip) 
     update serveripcounts set sitecount=sitecount+1 
     where [email protected] 
     end 
    end 
SELECT siteid from sites 
where [email protected] 
return 

和我的vb.net代碼做插入

 CommandObj.CommandText = "Getsite" 
     CommandObj.CommandTimeout = 90 

     Dim newUrl As String = String.Empty 

     CommandObj.Parameters.Clear() 

     Dim m_param As SqlParameter 

     m_param = CommandObj.Parameters.Add("@urlname", SqlDbType.VarChar, 500) 
     m_param.Direction = ParameterDirection.Input 
     m_param.Value = name 


     m_param = CommandObj.Parameters.Add("@siteid", SqlDbType.VarChar, 16) 
     m_param.Direction = ParameterDirection.Input 
     m_param.Value = siteid 

     m_param = CommandObj.Parameters.Add("@origin", SqlDbType.VarChar, 50) 
     m_param.Direction = ParameterDirection.Input 
     m_param.Value = method 

     m_param = CommandObj.Parameters.Add("@queryId", SqlDbType.VarChar, 25) 
     m_param.Direction = ParameterDirection.Input 
     m_param.Value = forumID 


     Dim recordsAffected As Integer = CommandObj.ExecuteNonQuery 
+0

'選擇@MySiteID = SITEID從網站,URLNAME = @UrlName RETURN @ MySiteID' – JonH

回答

2

您可以使用ExecuteScalar來獲取價值。 ExecuteNonQuery返回您希望獲取上次選擇生成的值時受影響的行數。您也可以使用ExecuteReader,但是當您的SP可能返回更多列和/或更多行時,這非常有用。

'Populate first column and first row value in siteID 
Dim siteID As Integer = CommandObj.ExecuteScalar 
+0

真棒...謝謝...的ExecuteScalar – vbNewbie

相關問題