标签: update-statement

使用Join和Group By更新语句

我编写了下面的Update语句,但它显示了错误,例如"关键字'GROUP'附近的语法不正确."

UPDATE 
       J
SET 
       J.StatusID = CASE WHEN SUM(DUV.VendorDUQuantity) = SUM(RD.InvoiceQuantity) THEN 1 ELSE J.StatusID END
FROM
        PLN_DU_Vendor DUV
    INNER JOIN ENG_Release R ON R.ReleaseID = DUV.ReleaseID
    INNER JOIN ENG_DU_Header H ON H.ReleaseID = R.ReleaseID AND DUV.DUID = H.DUID
    INNER JOIN MKT_JobOrder J ON J.JobOrderID = R.JobOrderID
    INNER JOIN MKT_CustomerOrder CO ON CO.OrderID = J.OrderID
    LEFT JOIN PMT_RFDHeader RH ON RH.JobOrderID = J.JobOrderID
    LEFT JOIN PMT_RFDDetail RD ON RD.RFDID = RH.RFDID AND RD.DUID = DUV.DUID                 
WHERE 
        CO.OrderID = 100
GROUP …
Run Code Online (Sandbox Code Playgroud)

sql join group-by sql-server-2008 update-statement

18
推荐指数
1
解决办法
6万
查看次数

Linq-to-SQL和DateTime怪异

我们在这里使用Linq-to-SQL的行为非常奇怪且不一致.

我们的应用程序安装在很多客户的网站上,大部分工作都很好.Linq-to-SQL中的一个查询更新表并将DateTime列设置为新值.

在所有情况下 - 包括我们的开发和测试系统 - 这个Linq-to-SQL语句被转换成以下内容:

UPDATE dbo.OurTable 
SET WorkTimeStamp = @WTS 
WHERE ID = @ID

@WTS = '2011-11-04 14:15:25', @ID = 555
Run Code Online (Sandbox Code Playgroud)

但是,在一个客户的网站上,由于我们尚未明确的原因,此更新将转换为:

UPDATE dbo.OurTable 
SET WorkTimeStamp = @WTS 
WHERE ID = @ID

@WTS = 'Nov  4 2011 02:15:25PM', @ID = 555
Run Code Online (Sandbox Code Playgroud)

由于某种原因,然后在SQL Server 2005上失败.

现在,该客户的服务器(Web服务器和SQL Server)安装了美国英语版本的Windows Server 2008; SQL Server中的语言设置为us_english,日期格式设置为mdy,运行更新的用户帐户的语言设置为EnglishSQL Server .....并且该设置在其他地方相同(例如,在我们的测试服务器上)基础设施).

所以我的问题是:

  1. 为什么 Linq-to-SQL突然创建一个完全不同的表示形式DateTime发送到SQL Server?有没有旋钮来控制它?

  2. 为什么ADO.NET和SQL Server 2005 SP2数据库无法UPDATE正确处理该语句?我们的日志中出现错误,内容如下:

SqlTypeException …

asp.net datetime sql-server-2005 linq-to-sql update-statement

15
推荐指数
1
解决办法
2180
查看次数

什么是在一个连接中执行多个UPDATE语句的最佳方法?

如何正确执行以下更新:

using (OracleConnection conn = new OracleConnection())
using (selCmd)
{

    string sql1 = "update Table1 set name = joe where id = 10;"
    string sql2 = "update Table2 set country = usa where region = americas;"
    string sql3 = "update Table3 set weather = sunny where state = CA;"
    string sql4 = "update Table4 set engine = v8 where maker = benz;"

    cmdUpdate.CommandText = sql(#);
    cmdUpdate.Connection = conn;
    recs = cmdUpdate.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

我知道全部或全部,如果它是一个交易,但我只是看看它是如何工作正确的方法.

我想迭代一个项目数组[sql1,sql2,sql3,sql4]并在CommandText中传递sql(#)并每次执行ExecuteNonQuery.

c# oracle odp.net update-statement

7
推荐指数
1
解决办法
8282
查看次数