如果我有一个SQL语句,像这样的:您可以创建CLR UDT以允许跨数据库共享表类型吗?
CREATE TYPE [dbo].[typeRateLimitVariables] AS TABLE(
[vchColumnName] [varchar](250) NULL,
[decColumnValue] [decimal](25, 10) NULL
)
而且我用它作为表变量的UDF在数据库中,我有足够的范围。假设我想从同一服务器上的另一个数据库中调用标量UDF,那么最终会出现未知类型的错误。
我试着在调用数据库上创建类型,但obv。那么我得到一个类型不匹配,因为虽然每个UDT都有相同的名称,但它们有不同的作用域,因此是不同的类型。
我知道你可以创建CLR类型,将程序集注册到SQL Server,然后通用访问自定义类型。我的想法是创建一个类型为“TABLE”的CLR UDT,但是我看不出如何实现这一点,因为我知道它必须是CLR类型“SqlDbType.Structured”;
我的问题是:
- 有不使用CLR在SQL创建全球范围内2008 R2的表变量的方式,如果不...
- 我如何定义一个UDT在C#CLR,其中UDT本质上是一个UDT“正如表”
似乎题外话大多数UDT讨论,但对于问题#1 - 它必须是一个表变量?变量(包括表变量)对调用上下文是本地的 - 即命令。您可以使用完整符号([数据库]。[角色]。[对象])编写多数据库操作,只要它们存在于一个查询中,就可以将数据戳入和导出表变量。 #temp表也可能工作。 – jklemmack
是的,在这种特殊情况下,我希望有这种类型可以随身携带,这就是为什么它需要成为UDT;解决方案非常大 - 所以是的; #temp通常是一个很好的解决方案,但是在这个特别的解决方案中,我们在整个演出中都使用了UDT,而不是简单地使用即席查询。 –