sql - 获取存储过程结果中的行数,无论列数/类型如何

标签 sql sql-server t-sql stored-procedures dynamic-sql

我开发了以下代码:

  CREATE PROCEDURE [dbo].[Test01]
  AS
  BEGIN
    SELECT * FROM TestTable
  END


  CREATE PROCEDURE [dbo].[Test02]
  AS
  BEGIN
    DECLARE @tmp TABLE
    (
      TestID int,
      Test   nvarchar(100),
    )
    INSERT INTO @tmp
    EXEC Test01
    SELECT COUNT(*) FROM @tmp
  END

但是如果我在 TestTable 上添加或删除一列,我必须修改 @tmp 否则结果是:

Column name or number of supplied values does not match table definition

如何解决这个问题?

最佳答案

尝试手动指定列:

SELECT a, b FROM TestTable

INSERT INTO @tmp (a, b)

这应该可以修复您提到的错误。

关于sql - 获取存储过程结果中的行数,无论列数/类型如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12689117/

相关文章:

sql - 表值函数返回类型

mysql - 将 Concat 表达式与连接结合使用

c# - 为什么异步代码比同步代码慢这么多

sql - MSSQL 中 ISNULL() 的奇怪行为

sql - 如何选择没有子行的父行和有父行的子行

sql-server - 删除游标SQL语句

mysql - 在这种情况下如何最好地设计数据库

sql - 根据另一列的字母顺序更新序数列

mysql - 合并一个表的所有行并添加到另一个表中

sql-server - 连接到本地 SQL 的 Azure SQL DB