sql-server - 在存储过程中查找项目计数
问题描述
我想找到 col_name 的空值数。我在 SSMS 中使用以下代码:
DECLARE @NumNull INT = N'SELECT COUNT(*) FROM ' + @WhichTable + N' WHERE col_name IS NULL'
我在程序开始时已声明@WhichTable
为 NVARCHAR(MAX)。
我收到此错误消息:
消息 245,级别 16,状态 1,过程 sp_FILL_CHAIN_NAMES,第 22 行将
nvarchar 值“SELECT COUNT(*) FROM UNION_ALL WHERE col_name IS NULL”转换为数据类型 int 时转换失败。
我不确定如何重写此 SQL 代码?我试过exec()
了,甚至是 SQL,但它似乎不起作用!
解决方案
您试图将整个 SELECT 语句存储在一个 int 变量中,而不是您选择的结果。
你需要:
- 将您的 SQL 存储在 NVARCHAR 变量中。
- 使用 sp_executesql 执行它。
那里有如何做到这一点的好例子:https: //support.microsoft.com/en-us/help/262499/how-to-specify-output-parameters-when-you-use-the-sp-executesql-存储
推荐阅读
- python - 如何在 Python 中使用 group by 绘制具有 2 列的条形图
- java - java.nio.channels.ClosedChannelException 同时消费来自风暴喷口的消息
- .net - 使功能区无效:如何在 Outlook VSTO 4 中
- wordpress - 我可以将现有的 html 主页谷歌分析代码添加到新的 wordpress 主页吗?
- java - 如何从一个活动中找出另一个活动已终止
- angular - RxJs 6:从 Observable 获取 ConnectableObservable
- python - 使用 scipy.optimize.fmin_cobyla 得到错误的结果
- android - Firebase 数据库身份验证电话权限被拒绝
- python - 将pygame中的文本格式化为表格
- css - CSS子选择器让我感到困惑