相关疑难解决方法(0)

T-SQL函数可以返回用户定义的表类型吗?

我有自己的类型:

CREATE TYPE MyType AS TABLE
(
    foo INT
)
Run Code Online (Sandbox Code Playgroud)

以及接收它作为参数的函数:

CREATE FUNCTION Test
(
    @in MyType READONLY
)
RETURNS @return MyType
AS
...
Run Code Online (Sandbox Code Playgroud)

它可以返回MyType还是只TABLE重复MyType的结构:

CREATE FUNCTION Test
(
    @in MyType READONLY
)
RETURNS @return TABLE (foo INT)
AS
...
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server function user-defined-functions sql-server-2008

20
推荐指数
1
解决办法
1万
查看次数

将子查询直接传递给SQL Server中USP中的表类型参数

假设我有一个使用表参数和表参数类型定义的存储过程

CREATE Type dbo.P1 AS TABLE 
(
    Id Int NOT NULL,
    Name nvarchar(50) NULL
)

CREATE PROCEDURE [dbo].[usp_D]
(
    @id0 Int,
    @P1 dbo.P1 READONLY
)
AS
...
Run Code Online (Sandbox Code Playgroud)

我可以通过声明一个表变量来调用这个存储过程

DECLARE @V as dbo.P1 
Run Code Online (Sandbox Code Playgroud)

用数据填充它

--tbl_V is just some table with data
INSERT INTO @V (id, name) SELECT id, name FROM tbl_V
Run Code Online (Sandbox Code Playgroud)

并调用存储过程

Execute dbo.usp_d 
  @id0=1, -- some value
  @P1=@V
Run Code Online (Sandbox Code Playgroud)

我的问题:是否可以一步将查询直接传递给存储过程,而无需单独声明@P1变量并将数据插入其中,如下所示:

Execute dbo.usp_d 
      @id0=1, -- some value
      @P1=(SELECT id, name FROM tbl_V)
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

6
推荐指数
1
解决办法
842
查看次数