这是我的代码
cmd.Connection = con;
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd.CommandText = "Drop View [Picklist]";
cmd.ExecuteNonQuery();
cmd.CommandText = "CREATE VIEW [Picklist] AS select A.desp_no,A.desp_date,A.custid,A.comp_name,A.ref_no,B.item_code as itemid,B.Pqty,C.serial_no,C.batchno,C.expiry,D.Item_name,D.Item_code,D.Mrp,E.cust_name,E.Address1,E.Address2,E.Address3,E.Phone,E.Email from dbo.Tbl_DespDet A inner join dbo.Tbl_Desp_Sub B on A.desp_no=B.desp_no inner join dbo.tbl_desp_barcode C on c.desp_no=A.desp_no inner join tbl_itemMast D on D.item_id=B.item_code inner join dbo.tbl_CustMast E on A.custid=E.cust_id where A.desp_no=@despno";
cmd.Parameters.AddWithValue("@despno", beobj._Desno);
try
{
cmd.ExecuteNonQuery();
return true;
}
catch(Exception ex)
{
return false;
}
相同的创建视图语句(只有复制粘贴)在Sql Server Management Studio中工作。有一个帮助我,因为我陷入了这个修复。
更新:
视图的名称仅作为[Picklist]进行测试。我尝试使用removind方括号,但没有发现差异。
答案 0 :(得分:0)
视图不能包含@parameters
。您可以做的是首先创建一个存储过程(CREATE PROCEDURE ...
),然后在C#代码中,将存储过程的名称设置为cmd.CommandText
。
或者,完全删除CREATE VIEW
部分,并将查询本身保留为cmd.CommandText
的内容。