Passing a parameter to an sql stored procedure in c#

40,523

Solution 1

If you want to call a stored procedure using a SqlCommand, do not execute EXEC GetIslemIdleri, execute just GetIslemIdleri, setting CommandType to CommandType.StoredProcedure:

cmd = new SqlCommand("GetIslemIdleri", sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@CARIID", 110));

using (var reader = cmd.ExecuteReader()) //error occurs here
{
    while (reader.Read())
    {
        islemidleri.Add(reader.GetInt32(0));
    }
}

Solution 2

you forgot to add the prodecure`s name:

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetIslemIdleri";
cmd.Parameters.Add("@CARIID", SqlDBType.Int).Value = 110;

And do procedure as:

CREATE PROCEDURE [dbo].[GetIslemIdleri] 
(
    @CARIID int 
)
AS
BEGIN
SET NOCOUNT ON;    
SELECT ID FROM TBLP1ISLEM WHERE TBLP1ISLEM.CARI_ID = @CARIID
END

This has to work.

Solution 3

You need to make sure your SqlCommand is set to CommandType.StoredProcedure.

cmd.CommandType = CommandType.StoredProcedure
Share:
40,523
Bastardo
Author by

Bastardo

Dr. Destiny: You don't have any special powers! Batman: Oh, I have one, Johnny. I never give up. Justice League - Only A Dream I wanna be the very best Like no one ever was To catch them is my real test To train them is my cause I'm not a person who particularly had heros when growing up. Dennis Ritchie The best way to predict the future is to invent it. Alan Curtis Kay You should trust your gut more than any metrics. Build it, and they will come. Jeff Atwood If you think it's simple, then you have misunderstood the problem. Bjarne Stroustrup Stay hungry, stay foolish. Steve JOBS My reputation grows with every failure. George Shaw Four steps to achievement: Plan purposefully. Prepare prayerfully. Proceed positively. Pursue persistently. William Arthur Ward

Updated on February 23, 2020

Comments

  • Bastardo
    Bastardo about 4 years
            string commandGetIslemIdleri = ("EXEC GetIslemIdleri");
    
            cmd = new SqlCommand(commandGetIslemIdleri, sqlConn);
            cmd.Parameters.Add(new SqlParameter("@CARIID", 110));
    
            using (var reader = cmd.ExecuteReader()) //error occurs here
            {
                while (reader.Read())
                {
                    islemidleri.Add(reader.GetInt32(0));
    
                }
    
            }
    

    Above is the code i am trying to write to call the below stored procedure with a parameter CARIID which is an integer. when i run the code an error occurs and says "Procedure or function 'GetIslemIdleri' expects parameter '@CARIID', which was not supplied." but as much as i understand from the examples i read from here i am sending the parameter with this code cmd.Parameters.Add(new SqlParameter("@CARIID", 110)); i need help, thank you in advance.

    ALTER PROCEDURE [dbo].[GetIslemIdleri] 
        @CARIID int 
    AS
    BEGIN
    SET NOCOUNT ON;
    
    SELECT ID
    FROM TBLP1ISLEM
    WHERE TBLP1ISLEM.CARI_ID=@CARIID
    END
    
    • WorldIsRound
      WorldIsRound about 13 years
      Did you specify cmd.CommandType = CommandType.StoredProcedure;
    • Bastardo
      Bastardo about 13 years
      i tried that like ten times, nothing changed but thank you.
  • Bastardo
    Bastardo about 13 years
    i tried that like seven times, nothing changed but thank you.
  • Bastardo
    Bastardo about 13 years
    i tried that like eight times, nothing changed but thank you.
  • Mormegil
    Mormegil about 13 years
    @EmreVeriyaz - Then you have an error elsewhere in your code, I have just tested it locally (on MS SQL 2008 R2), it works correctly.
  • Bastardo
    Bastardo about 13 years
    thanks Mitja. I solved the problem it was actually caused by a null value in my database which causes that the reader is set to null and that error to occur.
  • reddi.eth
    reddi.eth about 4 years
    Could also try the shorthand for setting parameters now cmd.Parameters.AddWithValue("@parameter", someValue);