Sql에서 @tpv를 매개 변수로 사용하는 프로 시저가 있습니다. 내가 C#에서 프로 시저를 실행할 때 - 작동하지 않습니다. 그리고 SQL에서 프로 시저를 실행할 때 - 완벽하게 작동합니다. 왜?@tpv가 C에서 작동하지 않는 절차 #
편집 : 내가 C#에서 proc을 실행할 때 - 오류가 발생하지 않지만 정상적으로 작동하지만 테이블이 전혀 변경되지 않았으며 misRow=1
대신 misRow=0
이 표시됩니다.
절차 : SQL을에서
CREATE procedure [dbo].[UpdateAdsList]
@tvp ListCrc32 readonly
as
update tb
set a_update=CONVERT(date,GETDATE(),101)
from Ads tb
join @tvp t on t.crc32 = a_crc32
Exec에서 : C에서 #
declare @ ListCrc32
insert into @ (crc32)
select 1652908150
exec UpdateAdsList @
Exec에서 :
int mis=1652908150;
//create the dataTable
dt = new DataTable();
dt.Columns.Add("crc32", typeof(int));
var row = dt.NewRow();
row["crc32"] = mis;
dt.Rows.Add(row);
//exec the proc
con.Open();
var cmd = new SqlCommand("UpdateAdsList",con);
cmd.Parameters.Add("@tvp",SqlDbType.Structured);
cmd.Parameters["@tvp"].Value = dt;
cmd.Parameters["@tvp"].TypeName = "ListCrc32";
int misRow=cmd.ExecuteNonQuery();
con.close();
"작동하지 않는다"는 것은 무엇을 의미합니까? 오류가 있습니까? 그렇다면 무엇? –
내 질문을 업데이트했습니다. –
어떤 차이가 있는지 모르겠지만 궁금합니다. 귀하의 열은 typeof (int)입니다. 왜 실수를 이중으로 변환합니까? –