小编Eli*_*thH的帖子

存储过程是否有“签名”,它是如何定义的?

我有一个由第三方工具调用的存储过程。我相信它使用的是 ODBC,但它本质上是一个黑匣子。DBMS 是 SQL Server 2012。

当存储过程是一个简单的选择时,第三方工具接收结果集,但是当它首先访问一个临时表时,它不会。例如,以下两个存储过程从 SSMS 返回相同的结果,但只能从工具中成功调用第一个。

我不明白的是,从外部角度来看,这两个功能有何不同。它们都采用相同的参数,最后一个查询产生相同的结果。

存储过程在哪里执行?

--This one works when called both ways
CREATE PROC [dbo].[sp_GetUsers] 
AS
    Select Top 1000 userId 
    from Users

--This only works from SSMS. 
CREATE PROC [dbo].[sp_ComplicatedGetUsers] 
AS

    If OBJECT_ID('tempdb..#TMPUsers') IS NOT NULL
    BEGIN
        DROP TABLE #TMPUsers
    END

    Select Top 1000 userId 
    INTO #TMPUsers
    from Users 

    Select * from #TMPUsers
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures

5
推荐指数
1
解决办法
1458
查看次数

标签 统计

sql-server ×1

stored-procedures ×1