I have parameters like this;
comm.CommandText = "usp_ProjectsCreateNew";
SqlParameter param = comm.CreateParameter();
param.ParameterName = "@ProjectId";
param.Direction = ParameterDirection.Output;
param.DbType = DbType.Int32;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@ProjectHeading";
param.Value = heading;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@ProjectLongDescription";
param.Value = longSummary;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@ProjectUrl";
param.Value = url;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@PromoFront";
param.Value = promoFront;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@ProjectThumbnail";
param.Value = thumbnailFileName;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@ProjectImage2";
param.Value = imageFileName1;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@ProjectImage3";
param.Value = imageFileName2;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@ProjectImage4";
param.Value = imageFileName3;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@ProjectImage5";
param.Value = imageFileName4;
comm.Parameters.Add(param);
comm.Transaction = tran;
int result = comm.ExecuteNonQuery();
My stored procedure code is like this;
CREATE PROC [dbo].[usp_ProjectsCreateNew]
(
@ProjectId INT output,
@ProjectHeading varchar(100),
@ProjectLongDescription varchar(max),
@ProjectUrl varchar(100),
@PromoFront bit,
@ProjectThumbnail varchar(50),
@ProjectImage2 varchar(50),
@ProjectImage3 varchar(50),
@ProjectImage4 varchar(50),
@ProjectImage5 varchar(50)
)
AS
BEGIN TRY
BEGIN TRAN
INSERT INTO [Projects]([ProjectHeading], [ProjectLongSummary], [ProjectUrl],
[PromoFront], [ProjectThumbnail], [ProjectImage2], [ProjectImage3], [ProjectImage4], [ProjectImage5])
VALUES(@ProjectHeading, @ProjectLongDescription, @ProjectUrl,
@PromoFront, @ProjectThumbnail, @ProjectImage2, @ProjectImage3, @ProjectImage4, @ProjectImage5);
SELECT @ProjectId = @@IDENTITY;
COMMIT TRAN
END Try
BEGIN CATCH
PRINT Error_Message();
ROLLBACK TRAN
END CATCH
But I am getting this error;
Message: Procedure or function ‘usp_ProjectsCreateNew’ expects parameter ‘@ProjectId’, which was not supplied.
Source: .Net SqlClient Data Provider
Method: Void OnError(System.Data.SqlClient.SqlException, Boolean, System.Action`1[System.Action])
First of all, you’re not telling the
SqlCommandthat it’s a stored procedure!Add this line:
right after setting the
comm‘s.CommandTextproperty.Then: some of your parameters are not clear – I would recommend you use something like this for creating and adding your parameters to the
SqlCommandobject:I would always explicitly define a
SqlDbTypefor each parameter to make it absolutely clear what it is. Not doing so could result in unwanted results.