Передача параметров через хранимую процедуру - PullRequest
2 голосов
/ 11 января 2011

Я новичок в взаимодействии БД с приложениями и пытаюсь извлечь пару полей из базы данных, где указанный параметр должен отфильтровать результаты. Я продолжаю получать без параметров или аргументов были предоставлены. Может кто-нибудь пролить немного понимания на это? Спасибо.

ниже - хранимая процедура:

ALTER PROC dbo.PassParamUserID

AS
set nocount on
DECLARE @UserID int;

SELECT f_Name, l_Name
FROM tb_User
WHERE tb_User.ID = @UserID;

А вот и мой код

class StoredProcedureDemo
{
    static void Main()
    {
        StoredProcedureDemo spd = new StoredProcedureDemo();

        //run a simple stored procedure that takes a parameter
        spd.RunStoredProcParams();
    }

    public void RunStoredProcParams()
    {
        SqlConnection conn = null;
        SqlDataReader rdr = null;

        string ID = "2";

        Console.WriteLine("\n the customer full name is:");

        try
        {
            //create a new connection object
            conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=c:\\Program Files\\Microsoft SQL Server\\MSSQL10.SQLEXPRESS\\MSSQL\\DATA\\UserDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True; Integrated Security=SSPI");
            conn.Open();

            //create command objects identifying the stored procedure
            SqlCommand cmd = new SqlCommand("PassParamUserID", conn);

            //Set the command object so it know to execute the stored procedure
            cmd.CommandType = CommandType.StoredProcedure;

            //ADD PARAMETERS TO COMMAND WHICH WILL BE PASSED TO STORED PROCEDURE
            cmd.Parameters.Add(new SqlParameter("@UserID", 2));

            //execute the command
            rdr = cmd.ExecuteReader();

            //iterate through results, printing each to console
            while (rdr.Read())
            {
                Console.WriteLine("First Name: {0,25} Last Name: {0,20}", rdr["f_Name"], rdr["l_Name"]);
            }
        }

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Вам нужно изменить сохраненный в SQL процесс на:

ALTER PROC dbo.PassParamUserID

@UserID int

AS set nocount on

SELECT f_Name, l_Name FROM tb_User WHERE tb_User.ID = @UserID;

В данный момент вы просто объявляете это как переменную в процедуре.

Вот несколько статей MSDN, которые могут помочь вам двигаться вперед:

Создание и изменение хранимых процедур

Объявление локальных переменных

1 голос
/ 11 января 2011
ALTER PROC dbo.PassParamUserID (@UserID int)

AS 
set nocount on 
SELECT f_Name, l_Name FROM tb_User WHERE tb_User.ID = @UserID;

Если вы хотите передать параметр, вам нужно определить его перед оператором AS, как показано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...