acumatica - 使用 PXDatabase 删除具有空字段的记录
问题描述
使用 PXDATABASE 删除表中特别包含空值的记录的正确方法是什么?
解决方案
我将展示使用 PXDatabase 方法处理 NULL 的错误方法和正确方法。
这是错误方法的一个例子。
PXDatabase.Delete<CWPAYINT>(
new PXDataFieldRestrict<CWPAYINT.linePmtAmt>(PXDbType.Decimal, 0),
new PXDataFieldRestrict<CWPAYINT.status>(PXDbType.VarChar, null)
);
这将产生以下 SQL 脚本,这不是我们想要的:
exec sp_executesql N'DELETE FROM CWPAYINT WHERE [linePmtAmt] = @P0 AND [status] = @P1 AND CompanyID = 2',N'@P0 decimal(1,0),@P1 varchar(8000)',@P0=0,@P1=NULL
这是处理 NULL 的正确方法:
PXDatabase.Delete<CWPAYINT>(
new PXDataFieldRestrict("linePmtAmt", 0),
new PXDataFieldRestrict("status", PXDbType.VarChar, 1, null, PXComp.ISNULL)
);
这是所需的 SQL 脚本:
exec sp_executesql N'DELETE FROM CWPAYINT WHERE [linePmtAmt] = @P0 AND [status] IS NULL AND CompanyID = 2',N'@P0 int',@P0=0
推荐阅读
- jquery - 动态目标点击事件未触发
- javascript - 对使用 React 钩子找到的解决方案的性能的担忧
- git - Github:在分叉的 master 上获取和 rebase fork
- c++ - 标准的 ODR 示例是否正确?
- sql-server - 防止 SQL Server 2017 循环执行非相关子查询
- java - 阅读多行以创建一行的最佳方法是什么?
- linux - 如何找到在 Linux 上构建 mpi 基准测试所需的英特尔编译器目录的路径?
- git - Gitlab 还原,合并请求显示 0 个更改
- ajax - 如何将 Ajax 调用发送到位于 Kubernetes 集群中 Pod 中的应用程序?
- cmd - cmd 复制除具有特定扩展名的文件之外的所有内容