首页 > 解决方案 > 在存储过程中查找项目计数

问题描述

我想找到 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,但它似乎不起作用!

标签: sql-serverstored-procedures

解决方案


您试图将整个 SELECT 语句存储在一个 int 变量中,而不是您选择的结果。

你需要:

  1. 将您的 SQL 存储在 NVARCHAR 变量中。
  2. 使用 sp_executesql 执行它。

那里有如何做到这一点的好例子:https: //support.microsoft.com/en-us/help/262499/how-to-specify-output-parameters-when-you-use-the-sp-executesql-存储


推荐阅读