【发布时间】:2016-01-02 06:28:55
【问题描述】:
我是新来的,这是我的第一个问题。
我在 VB 中创建了一个 dll,以便在 SQL Server 2008 R2 开发中使用它
如果我删除表格输入(并使用 xml),下面的示例是有效的,但我需要有一个表格输入。
--VB--
[SqlFunction(DataAccess:=DataAccessKind.Read, FillRowMethodName:="FillRow", TableDefinition:="ID int, Text nvarchar(max)")]
Public Shared Function MyFunction(ByVal tbl As IEnumerable(Of InputRow)) As IEnumerable
...
End Function
Public Shared Sub FillRow(...)
...
End Sub
Public Class InputRow
Public sID As SqlInt32
Public sText As SqlString
End Class
--SQL--
Create ASSEMBLY [ASSEMBLY1] from '[PATH].dll'
WITH PERMISSION_SET = unsafe
CREATE ASSEMBLY [ASSEMBLY2] from '[PATH].XmlSerializers.dll'
WITH PERMISSION_SET = unsafe
CREATE TYPE TableInput AS TABLE
(ID int, MyText varchar(1024))
CREATE FUNCTION ufn
(@sInputTable TableInput READONLY)
RETURNS TABLE (
anID int null,
SomeText nvarchar(max) null)
WITH EXECUTE AS CALLER
AS EXTERNAL NAME MyDotNETAssembly.[MyNamespace.MyClassname].MyFunction
错误: 消息 6552,级别 16,状态 3,过程 ufn,第 2 行 “ufn”的 CREATE FUNCTION 失败,因为参数“@sInputTable”的 T-SQL 和 CLR 类型不匹配。
有人可以帮忙吗? 如何在 SQL 中“分配”输入参数?
【问题讨论】:
标签: .net sql-server vb.net clr