我有以下存储过程代码,并希望将传递的参数@tabname
添加为结果集中的列。
CREATE PROCEDURE CountStar
@Tabname char(10)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL varchar(250)
SELECT @SQL = 'SELECT ETL_LAST_UPD_DTTM, COUNT(*) FROM ls.' + QuoteName(@Tabname) +
'GROUP BY ETL_LAST_UPD_DTTM'
EXEC (@SQL)
SELECT @SQL = 'SELECT ETL_LAST_UPD_DTTM, COUNT(*) FROM ci.' + QuoteName(@Tabname) +
'GROUP BY ETL_LAST_UPD_DTTM'
EXEC (@SQL)
--COMMIT
END
GO
目前,这将返回上次更新的时间戳和正在传递给已识别的2个模式的存储过程的表的记录计数。我想将@tabname
添加到结果集中作为第一列,然后是最后更新的时间戳和记录计数。这将返回2个结果集,每个结果集对于每个返回的结果集应该看起来像这样。
Table_name Timestamp rec_cnt
--------------------------------------------------
CUSTOMERS 2015-09-24 13:10:01.1770000 378
我尝试了一些但却无法正确理解语法。
感谢您的任何指示。 专利
答案 0 :(得分:3)
CREATE PROCEDURE CountStar
@Tabname SYSNAME --<-- use appropriate data type for sql server objects
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL nvarchar(max);
SELECT @SQL = N'SELECT @Tabname AS Table_name,ETL_LAST_UPD_DTTM, COUNT(*)
FROM ls.' + QuoteName(@Tabname) +
N' GROUP BY ETL_LAST_UPD_DTTM'
EXEC sp_executesql @SQL
,N'@Tabname SYSNAME'
,@Tabname
SELECT @SQL = N'SELECT @Tabname AS Table_name,ETL_LAST_UPD_DTTM, COUNT(*)
FROM ci.' + QuoteName(@Tabname) +
N' GROUP BY ETL_LAST_UPD_DTTM'
EXEC sp_executesql @SQL
,N'@Tabname SYSNAME'
,@Tabname
END
GO