2015-09-27 76 views
0

我有我提供了這個存儲過程:ASP.NET如何調用此存儲過程

USE [DatabaseName] 
GO 

[email protected]_value int, 
@L1 nchar(10), 
@L2 nchar(10), 
@L3 nchar(10), 
@L4 nchar(10), 
@LD1 nchar(15), 
@LD2 nchar(15), 
@LD3 nchar(15), 
@LD4 nchar(15) 

[email protected]_value = [dbo].[uspCheckTagId] 
      @TagId = '10001', 
      @deviceId = 'testunitid', 
      @L1 = @L1 OUTPUT, 
      @L2 = @L2 OUTPUT, 
      @L3 = @L3 OUTPUT, 
      @L4 = @L4 OUTPUT, 
      @LD1 = @LD1 OUTPUT, 
      @LD2 = @LD2 OUTPUT, 
      @LD3 = @LD3 OUTPUT, 
      @LD4 = @LD4 OUTPUT 

SELECT 
    @L1 as N'@L1', 
    @L2 as N'@L2', 
    @L3 as N'@L3', 
    @L4 as N'@L4', 
    @LD1 as N'@LD1', 
    @LD2 as N'@LD2', 
    @LD3 as N'@LD3', 
    @LD4 as N'@LD4' 

SELECT 'Return Value' = @return_value 
GO 

我的問題是如何將我稱之爲從ASP.NET這個存儲過程? 。

我完全從頭開始,因此所有我在過去嘗試過的代碼,現在不見了:(

請幫助

+0

這是存儲過程的唯一部件 - 請包括**完整的源** - 和也請告訴我們**什麼具體的數據庫**這是! –

回答

1

假設這是SQL服務器(你應該真的爲此提供正確的代碼!),你應該使用的代碼是這樣的 - 讓像SqlConnectionSqlCommand一次性的東西到適當的using(..) { ... }塊,使用參數爲你的程序,等等

procedure void CallStoredProcedure(int tagId) 
{ 
    // get connection string, typically from config 
    string connectionString = ConfigurationManager.ConnectionStrings["...."].ConnectionString; 

    // Define stored procedure name 
    string storedProcedureName = "dbo.uspCheckTagId"; 

    // create connection and command 
    using (SqlConnection conn = new SqlConnection(connectionString)) 
    using (SqlCommand cmdExecProc = new SqlCommand(storedProcedureName, conn)) 
    { 
     cmdExecProc.CommandType = CommandType.StoredProcedure; 

     // build up parameters 
     cmdExecProc.Parameters.Add("@TagId", SqlDbType.Int).Value = tagId; 

     cmdExecProc.Parameters.Add("@L1", SqlDbType.NChar, 10).ParameterDirection = ParameterDirection.Output; 
     cmdExecProc.Parameters.Add("@L2", SqlDbType.NChar, 10).ParameterDirection = ParameterDirection.Output; 
     cmdExecProc.Parameters.Add("@L3", SqlDbType.NChar, 10).ParameterDirection = ParameterDirection.Output; 
     cmdExecProc.Parameters.Add("@L4", SqlDbType.NChar, 10).ParameterDirection = ParameterDirection.Output; 
     cmdExecProc.Parameters.Add("@LD1", SqlDbType.NChar, 15).ParameterDirection = ParameterDirection.Output; 
     cmdExecProc.Parameters.Add("@LD2", SqlDbType.NChar, 15).ParameterDirection = ParameterDirection.Output; 
     cmdExecProc.Parameters.Add("@LD3", SqlDbType.NChar, 15).ParameterDirection = ParameterDirection.Output; 
     cmdExecProc.Parameters.Add("@LD4", SqlDbType.NChar, 15).ParameterDirection = ParameterDirection.Output; 

     // open connection, execute proc, close connection 
     conn.Open(); 
     cmdExecProc.ExecuteNonQuery(); 

     // read out the output parameters here, and do with them whatever you need ...... 
     var l1Value = cmdExecProc.Parameters("@L1").Value;   
     .... 

     conn.Close(); 
    } 
}  
0

首先,我會做給定的過程如下所示的存儲過程:

CREATE PROC MyStoredProcedure 
AS 
<Code from your snipped without USE statement> 
GO 

話,我會從ASP.NET代碼隱藏文件稱之爲

SqlConnection insSqlConnection = new SqlConnection("YOUR CONNECTION STRING HERE"); 
SqlCommand insSqlCommand = new SqlCommand("MyStoredProcedure", insSqlConnection); 
insSqlCommand.CommandType = CommandType.StoredProcedure; 
SqlDataAdapter insSqlDataAdapter = new SqlDataAdapter(insSqlCommand); 
DataTable insDt = new DataTable(); 
insSqlDataAdapter.Fill(insDt); 
insSqlConnection.Close(); 

如果您可以提供更多細節到您的方案,可以有更好的執行方式。

+0

因爲這個程序確實沒有返回結果集 - 但只有少數輸出參數 - 使用'SqlDataAdapter'和'DataTable'根本沒有意義...... –