3

SQL Server 2008 で最初の CLR ストアド プロシージャを呼び出そうとしています。DLL を正常にコンパイルし、アセンブリを作成しました。今、CREATE PROCEDURE ステートメントを使用して、登録されたアセンブリを参照するストアド プロシージャを作成しようとしています。このチュートリアルに従って、構文エラーが発生しています...

--This line worked. Just including this code just to show what I am doing ...
--create assembly 
--LevenshteinLibrary
--from 'Drive Letter:\Path\LevenshteinLibrary.dll'

create procedure testCLR(@s1 nvarchar(1000), @s2 nvarchar(1000))
as external LevenshteinLibrary.getLevenshteinDistance  --Incorrect syntax near '.'.

このプロシージャを作成するにはどうすればよいですか? 「外部として」の適切な構文を説明するmsdn create procedureページには何も表示されません。

VB.net コードは次のようになります。

Imports System.Math
Imports System.Text.RegularExpressions
Imports Microsoft.SqlServer.Server

Partial Public Class LevenshteinerAndSoundexer

<SqlProcedure()> _
Public Shared Function getLevenshteinDistance(ByVal string1 As String, ByVal String2 As String) As Integer
4

1 に答える 1

3

これはうまくいきますか?

create procedure testCLR(@s1 nvarchar(1000), @s2 nvarchar(1000))
as external NAME LevenshteinLibrary.LevenshteinerAndSoundexer.getLevenshteinDistance

のドキュメントにAs Externalは 3 つの部分からなる名前があり、2 つの部分しかありませんでした。

また、Pondlife が指摘しているように、それもAs External必要NAMEです。


通常、クラスは「部分的な」クラスですが、あなたのクラスがどのように終わったのかはわかりません。次のように、VB メソッドの前に属性を付ける必要があるかもしれません。

Partial Public Class LevenshteinerAndSoundexer

    <SqlProcedure()> _
    Public Shared Function getLevenshteinDistance(ByVal string1 As String, ByVal String2 As String) As Integer

この記事を見て、そこで説明されているプロセスに従うことをお勧めします: http://msdn.microsoft.com/en-us/library/5czye81z(v=vs.80).aspx

于 2013-05-17T17:56:39.940 に答える