6

これは少し古い内容ですが、プロシージャから値を返すために SQL Server でストアド プロシージャを作成する方法を説明できる人が必要です。例:

SELECT NAME, ADDRESS 
FROM CUSTOMER 
WHERE IDCUSTOMER = 'DS212';

次に、代わりに顧客の名前と住所が必要です。

これをストアド プロシージャとして作成し、VB.NET で実行する方法を示す必要があります。おそらく、名前は LABEL1.TEXT に、アドレスは LABEL2.TEXT にプロンプ​​トされると想定します。

return を使用してこの SQL-Server ストアド プロシージャを改善しましたが、実行後に返すものがありません

CREATE PROCEDURE inserting_customer
            @custId varchar(10),
            @usr_id int
AS
BEGIN 
SET @usr_id = (SELECT MAX(SUBSTRING(CUSTOMER.idCustomer,3, LEN(CUSTOMER.IDCUSTOMER))) FROM CUSTOMER
WHERE 
SUBSTRING(CUSTOMER.idCustomer,1,2) = @custId)
END
RETURN @usr_id
GO

これは私のVB.NETです

  conn.Open()

        Dim cmd As New SqlCommand("inserting_customer", conn)

        Try
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add("@custId", SqlDbType.VarChar)
            cmd.Parameters("@custId").Value = "YW"
            cmd.Parameters.Add("@usr_id", SqlDbType.Int)
            cmd.Parameters("@usr_id").Value = 0
            cmd.ExecuteNonQuery()
        Finally
            If cmd IsNot Nothing Then cmd.Dispose()
            If conn IsNot Nothing AndAlso conn.State <> ConnectionState.Closed Then conn.Close()
        End Try
4

1 に答える 1

23

sqlserver にこの sproc があるとします。

CREATE PROCEDURE GetNameAddress(@custID nvarchar(10))
as
BEGIN
SELECT NAME,ADDRESS FROM CUSTOMER WHERE IDCUSTOMER = @custID;
END

あなたはそれを呼び出し、標準的な方法で結果を取得します

' GetConnection is a method that creates and return the '
' SqlConnection used here according to your connection string'
Using cn = GetConnection()
   cn.Open()

   ' Create the command with the sproc name and add the parameter required'
   Dim cmd As SqlCommand = new SqlCommand("GetNameAddress", cn)
   cmd.CommandType = CommandType.StoredProcedure
   cmd.Parameters.AddWithValue("@custID", "DS212")

   ' Ask the command to create an SqlDataReader on the result of the sproc'
   Using r = cmd.ExecuteReader()

       ' If the SqlDataReader.Read returns true then there is a customer with that ID'
       if r.Read() then

           ' Get the first and second field frm the reader'
           lblName.Text = r.GetString(0)
           lblAddress.Text = r.GetString(1)
       end if
   End Using
End using

これは、sproc から返されるレコードが 0 個または 1 個であると予想される場合の標準的な方法であることに注意してください。複数のレコードがある場合は、SqlDataReader.Read メソッドに対して while ループを使用し、返されたレコードを格納するコントロールを提供する必要があります。

于 2012-04-29T15:32:01.860 に答える