我有一个返回结果集的动态存储过程.
CREATE OR ALTER PROCEDURE [test].[proc]
(@id INT,
@temp_table_name VARCHAR(50) = '')
AS
BEGIN
SET @sql = N'SELECT * FROM test.table con';
IF (LEFT(@temp_table_name, 2) = '##')
BEGIN
DECLARE @move_to_temp_sql varchar(max);
SET @move_to_temp_sql = REPLACE(@sql, 'FROM test.table con', 'INTO ' + @temp_table_name + ' FROM test.table con');
END
EXECUTE(@sql)
END
当我从另一个存储过程调用存储过程时,我传递的是临时表的名称.
[test].[proc] 1, '##test'
我想要从调用存储过程访问全局临时表##test
,如下所示:
SELECT * FROM ##test;
我得到
无效的对象名称‘##test’
当我try 这个的时候.
请注意:表的 struct 会有所不同,因此我不能在调用存储过程中定义临时表,它必须在动态存储过程中定义.