Я определил две хранимые процедуры, которые должны возвращать набор данных, первая работает отлично, вторая работает без ошибок, но не возвращает никакого набора результатов, почему?
Хранимая процедура # 1: возвращает и отображает набор записей:
-- Counts the number of rows from any non-system Table, *SAFELY*
CREATE PROCEDURE spCountAnyTableRows(@PassedTableName as varchar(255))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ActualTableName AS NVARCHAR(255)
DECLARE @sql AS NVARCHAR(MAX)
SELECT @ActualTableName = QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @PassedTableName
SELECT @sql='SELECT COUNT(*) FROM AS cnt' + @PassedTableName
EXECUTE(@sql)
RETURN
END
EXEC spCountAnyTableRows 'tmp.myTable'
Хранимая процедура # 2: выполняется без ошибок, но не возвращает никаких данных
DROP PROCEDURE IF EXISTS npi.spJoinOnMatnr
GO
CREATE PROCEDURE npi.spJoinOnMatnr(@PassedTableName AS NVARCHAR(255))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ActualTableName AS NVARCHAR(255)
DECLARE @sql AS NVARCHAR(MAX)
SELECT @ActualTableName = QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @PassedTableName
SELECT @sql = 'SELECT A.id, A.F1, B.maktx, B.maktx_cnt
FROM ' + @ActualTableName + ' A
LEFT JOIN npi.makt B ON A.F1 = B.matnr
ORDER BY A.id;'
EXECUTE(@sql)
RETURN
END
GO
EXEC npi.spJoinOnMatnr 'tmp.myTable'