hello experts,
i am updating a table using a stored procedure passing it few parameters and a table . in rerun i want to use output clause and see inserted (Changed Column) , but i am getting error
sConn.Open();
SqlCommand cmd = new SqlCommand("updateRCIANos4", sConn);
cmd.CommandType = CommandType.StoredProcedure;
//cmd.Parameters.Add(new SqlParameter("@plantid", ErpMdi1.ID));
cmd.Parameters.Add(new SqlParameter("@finyear", txtfinyear.Text));
cmd.Parameters.Add(new SqlParameter("@connect2", txtConnect2.Text));
SqlParameter param = cmd.Parameters.AddWithValue("@RCIANo", dtGrnNo);
cmd.CommandTimeout = 0;
param.SqlDbType = SqlDbType.Structured;
//output cluase test 26.9.2018
SqlParameter outputPara = new SqlParameter();
outputPara.ParameterName = "@InsertOutput1";
outputPara.Direction = ParameterDirection.Output;
outputPara.SqlDbType = SqlDbType.Structured;
cmd.Parameters.Add(outputPara);/****** Object: StoredProcedure [dbo].[updateRCIANos] Script Date: 07/21/2011 17:53:16 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF object_id( '[dbo].[updateRCIANos4]', 'P') is not null drop procedure [dbo].[updateRCIANos4] go create PROCEDURE [dbo].[updateRCIANos4] @finyear int, @connect2 int, @RCIANo [dbo].[RCIANo] READONLY WITH EXECUTE AS CALLER aS BEGIN SET NOCOUNT OFF; --It returns no. of rows affected when set to OFF declare @errid int,@ad nvarchar(max),@Updated [dbo].[RCIAupdated] ; BEGIN TRY BEGIN TRAN --set Context_Info 0x55555 --set @ad = 'alter database '+ DB_NAME() + ' set single_user WITH ROLLBACK IMMEDIATE;' --EXECUTE sp_executesql @ad --alter table billitem disable trigger all DECLARE @InsertOutput1 table ( rcia_no varchar(15), rcia_dt date, rejqty decimal(16,3), acceptedqty decimal(16,3) ) UPDATE billitem SET rcia_no = c.rcia_no, rcia_dt=c.rcia_dt,rejqty=isnull(c.rejqty,0),acceptedqty=c.acceptedqty OUTPUT INSERTED.rcia_no,INSERTED.rcia_dt,INSERTED.rejqty,INSERTED.acceptedqty INTO @InsertOutput1 from billitem b join bill a on a.ui=bill_ui join maingl d on d.gl_code= a.doc_gl join @rciano c on a.finyear = @finyear and a.connect2= @connect2 and a.doc_no=c.inv_no --@@rowcount returns no of rows updated --print @@rowcount --set @ad = 'alter database ' + DB_NAME() + ' SET multi_USER' --EXECUTE sp_executesql @ad --alter table billitem enable trigger all SELECT @errid = @@ERROR IF (@errid <> 0) goto PROBLEM COMMIT TRAN RETURN select * from @InsertOutput1 END TRY BEGIN CATCH set @errid = @@ERROR ROLLBACK TRAN RETURN @errid END CATCH PROBLEM: IF (@errid <> 0) BEGIN ROLLBACK TRAN RETURN @errid END END