近段时间碰到在一条SQL语句的查询时,需要另外一个存储过程的查询结果集,但又无法直接Select * From YourProcedure , 后来从网上查找,可以用以下几种方式解决。
- //1:创建表结构一致的临时表
- Create Table #TempTable(bookid int , bookname nvarchar(50) , price decimal)
- INSERT INTO #TempTable EXEC YourProcedure
- SELECT * FROM #TempTable
- Drop #TempTable
- //2: 直接插入到临时表
- SELECT * INTO #TempTable FROM OPENROWSET(
- 'SQLOLEDB','SERVER=servername;uid=sa;pwd=yourpwd;Database=DBName',
- 'SET FMTONLY OFF;SET NOCOUNT ON; EXEC YourProcedure')AS A
- SELECT * FROM #TempTable
- DROP TABLE #TempTable
当然,如果可以使用自定义函数的话,我们直接就可以用Select * from fn_xxx来做到了,下面是关于使用自定义函数的方式进行查询,也记录下,也许以后会用到。
- CREATE FUNCTION fn_Order
- (@FirstName varchar(20),@LastName varchar(20))
- RETURNS @Order_Table TABLE
- (
- OrderID int,
- GoodsName varchar(20),
- CustomerName varchar(40)
- )
- BEGIN
- INSERT INTO @Order_Table
- SELECT XXXXXX
- RETURN
- END