我有一個SQL中的過程,獲得@tpv作爲參數。當我從c#執行程序 - 它不工作,當我從Sql執行程序 - 它的工作完美。爲什麼?過程與@tpv不工作從C#
編輯:當我從c#執行proc時 - 它沒有得到一個錯誤,好像它工作正常,但表完全沒有改變,並且misRow=0
而不是misRow=1
。
步驟:
從SQLCREATE 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
高管:
declare @ ListCrc32
insert into @ (crc32)
select 1652908150
exec UpdateAdsList @
Exec的從C#:
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),爲什麼你把mis轉換成double? –