c# - Passing multiple tables to stored procedure with multiple table-valued parameters problem -


i trying pass datatables stored procedure accepts multiple table-valued parameters. problem is, seems parameters being passed first 1 getting errors this:

trying pass table-valued parameter 13 column(s) corresponding user-defined table type requires 17 column(s).

here's code..

stored procedure header:

create procedure testproc @parm1 temp1tabletype readonly, @parm2 temp2tabletype readonly, @parm3 temp3tabletype readonly, @parm4 temp4tabletype readonly, @parm5 temp5tabletype readonly 

@parm1 has 17 columns, @parm2 13 columns, @parm3 3 columns, @parm4 11 columns , @parm5 has 8 columns.

c# code (i use microsoft.applicationblocks)

datatable dttable1 = dssource.tables[0]; datatable dttable2 = dssource.tables[1]; datatable dttable3 = dssource.tables[2]; datatable dttable4 = dssource.tables[3]; datatable dttable5 = dssource.tables[4];  sqlparameter param1 = new sqlparameter("@parm1", dttable1); sqlparameter param2 = new sqlparameter("@parm2", dttable2); sqlparameter param3 = new sqlparameter("@parm3", dttable3); sqlparameter param4 = new sqlparameter("@parm4", dttable4); sqlparameter param5 = new sqlparameter("@parm5", dttable5);  param1.sqldbtype = sqldbtype.structured; param2.sqldbtype = sqldbtype.structured; param3.sqldbtype = sqldbtype.structured; param4.sqldbtype = sqldbtype.structured; param5.sqldbtype = sqldbtype.structured;  sqlparameter[] parms = new sqlparameter[5]; parms[0] = param1; parms[1] = param2; parms[2] = param3; parms[3] = param4; parms[4] = param5;  returnval = sqlhelper.executescalar(cfgkeys.connstring, commandtype.storedprocedure, "testproc", parms); 

today tried using sqlclient instead of microsoft.applicationblocks still got same error.

sqlconnection conn = new system.data.sqlclient.sqlconnection(cfgkeys.connstring); conn.open(); using (conn) {    sqlcommand cmdtestdatatoserver= new sqlcommand("testproc", conn);    cmdtestdatatoserver.commandtype = commandtype.storedprocedure;     sqlparameter param1 = new sqlparameter("@parm1", dttable1);    sqlparameter param2 = new sqlparameter("@parm2", dttable2);    sqlparameter param3 = new sqlparameter("@parm3", dttable3);    sqlparameter param4 = new sqlparameter("@parm4", dttable4);    sqlparameter param5 = new sqlparameter("@parm5", dttable5);     param1.sqldbtype = sqldbtype.structured;    param2.sqldbtype = sqldbtype.structured;    param3.sqldbtype = sqldbtype.structured;    param4.sqldbtype = sqldbtype.structured;    param5.sqldbtype = sqldbtype.structured;     cmdtestdatatoserver.parameters.add(param1);    cmdtestdatatoserver.parameters.add(param2);    cmdtestdatatoserver.parameters.add(param3);    cmdtestdatatoserver.parameters.add(param4);    cmdtestdatatoserver.parameters.add(param5);     returnval = cmdtestdatatoserver.executescalar(); }  conn.close(); 

when run this, seems parameters being passed @param1 hence error mentioned earlier. works when manually run procedure in tsql, error on code. can spot went wrong?

tia!

found problem.. forgot mention datatable data sent through web service, using dataset method getxml. problem getxml method not include null columns hence missing columns.

thanks guys!


Comments

Popular posts from this blog

asp.net - repeatedly call AddImageUrl(url) to assemble pdf document -

java - Android recognize cell phone with keyboard or not? -

iphone - How would you achieve a LED Scrolling effect? -