SQL Create View查询在Management studio中成功执行但在C#代码中失败

时间:2016-03-17 10:30:22

标签: c# sql-server

这是我的代码

                   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方括号,但没有发现差异。

1 个答案:

答案 0 :(得分:0)

视图不能包含@parameters。您可以做的是首先创建一个存储过程(CREATE PROCEDURE ...),然后在C#代码中,将存储过程的名称设置为cmd.CommandText。 或者,完全删除CREATE VIEW部分,并将查询本身保留为cmd.CommandText的内容。