当前位置: 首页 > 面试题库 >

在T-SQL中结合存储过程和查询

樊胜
2023-03-14
问题内容

如何在常规SQL查询中结合执行存储过程以及使用其结果或参数?

例如,我想执行以下操作:

-- passing result of SELECT to SP
SELECT a, b FROM t
EXEC my_sp a, b

-- passing result of SP to INSERT    
INSERT INTO t
EXEC my_sp a, b

等等。


问题答案:

不,您需要使用临时表

create table #results (col1 int, col2 varchar(5) ...)

INSERT INTO #results
   EXEC YourProcedure @parma...

那你就可以加入

SELECT
    *
    FROM YourTable     y
        JOIN #results  r ON ...
    ....

如果您不知道该过程的列和数据类型,则可以使用以下出色答案:将存储过程的结果插入临时表中

简而言之,它用于OPENROWSET将存储过程执行到动态创建的#temp表中,而无需命名和了解所有列的类型。



 类似资料:
  • 主要内容:示例Transact SQL 中的存储过程用于一次又一次地节省编写代码的时间。它通过将过程存储在数据库中并通过传递参数来获得所需的输出来实现这一点。 语法: 下面是存储过程创建的语法 - 参数可选:当我们创建一个过程时,一个或多个参数被传递到过程中。存储过程中有3种类型的参数: IN - 过程可以引用参数。该过程将覆盖参数的值。 OUT- 过程不能引用参数,但过程会覆盖参数值。 IN OUT- 参数被

  • 本文向大家介绍在MySQL存储过程中实现动态SQL查询?,包括了在MySQL存储过程中实现动态SQL查询?的使用技巧和注意事项,需要的朋友参考一下 对于存储过程中的动态SQL查询,请使用PREPARE STATEMENT的概念。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是创建存储过程并实现动态SQL的查询- 调用存储

  • 问题内容: 我们正在从SQL Server 2005升级到2008。几乎将2005实例中的每个数据库都设置为2000兼容模式,但是我们正在跳至2008。我们的测试已经完成,但是我们了解到,我们需要获取更快。 我发现了一些存储过程,这些存储过程要么从丢失的表中选择数据,要么尝试对不存在的列进行ORDER BY列。 包装SQL以在SET PARSEONLY ON中创建过程,并在try / catch中

  • 本文向大家介绍SQL SERVER调用存储过程小结,包括了SQL SERVER调用存储过程小结的使用技巧和注意事项,需要的朋友参考一下 在SQL Server数据库的维护或者Web开发中,有时需要在存储过程或者作业等其他数据库操作中调用其它的存储过程,下面介绍其调用的方法 一、SQL SERVER中调用不带输出参数的存储过程 SQL 代码 二、SQL SERVER中调用带输出参数的存储过程 SQL

  • 问题内容: 是否允许在SQL CTE语句中执行存储过程?我对sql cte查询有点陌生… 问题答案: 不,对不起 仅SELECT语句 如果您需要使用存储的proc输出(结果集),那么它将是一个临时表

  • 我如何在服务器的另一个存储过程中执行SQL存储过程?我将如何传递第二个过程的参数。?