SQL Server - 将表作为参数传递给select中的函数

时间:2013-12-13 20:26:16

标签: sql-server sql-server-2012 sql-server-2012-express

将TableType设置为

create type KeyPairTable as Table (KeyValue nvarchar(50), 
                                   [Description] nvarchar(500))

我有一张可以简化为

的表格
create table Elements (SharedKey int,
                       ElementName nvarchar(50), 
                       SourceSQL nvarchar(500))

我有一个标题

的函数
create function RunElement(@SharedKey int,
                           @ValuesTable KeyPairTable readonly)

现在我需要做的是:

select RunElement(SharedKey, 
                  case when SourceSql is not null then [X] 
                       else [Y] 
                  end) from Elements

其中[X]采用存储在SourceSQL中的SQL语句并将其作为KeyPairTable传递,[Y]是一个空表(例如,它不会被使用/不需要)

我想避免使用游标/循环并在select中执行此操作,因为这是问题的简化,而select实际上连接了几个表。

1 个答案:

答案 0 :(得分:0)

  

我要问的是如何让'table'传递到其中的一个函数中   选择

好的,你的示例代码中有一些部分对我来说仍然没有意义,但我相信这个例子应该是你想要的(或者你能理解得足够近。)

DECLARE @myTable KeyPairTable 

INSERT INTO @myTable (KeyValue, [Description])
  SELECT SharedKey, 
         CASE WHEN SourceSql IS NULL THEN [X] ELSE [Y] END
  FROM Elements

SELECT RunElement(SharedKey, @myTable)