Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 does not match SQL declaration  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
что не так?

Msg 6258, Level 16, State 1, Procedure Stem1251, Line 2
Function signature of "FillRow" method (as designated by SqlFunctionAttribute.FillRowMethodName) does not match SQL declaration for table valued CLR function'Stem1251' due to column 1.

CREATE FUNCTION Stem1251( @buffer nvarchar(max) ) 
RETURNS TABLE (
   hashWord bigint,
   partWord nvarchar(max)
)
WITH EXECUTE AS CALLER AS EXTERNAL NAME CliClr.ClrLang.Stem1251;
go



МS в своем стиле, постоянно примеры кода для C++ игнорирует, приходится самому додумывать

public ref class StemResult   // http://technet.microsoft.com/en-us/library/ms131103.aspx
{
public:
    SqlInt64  hashWord;
    SqlString partWord;

    StemResult( SqlInt64 hashWord, SqlString partWord ) 
    {
        this->hashWord = hashWord;
        this->partWord = partWord;
    }
};

public ref class ClrLang
{
public:
    static void StemResultSet_FillRow( Object^ obj, SqlInt64& hashWord, SqlString& partWord ) 
    {
          StemResult^ recordset = (StemResult^)obj;

          hashWord  = recordset->hashWord;
          partWord  = recordset->partWord;
    }

    [SqlFunction(DataAccess = DataAccessKind::Read, FillRowMethodName = "StemResultSet_FillRow", TableDefinition="hashWord bigint, partWord nvarchar(max)")]
    static System::Collections::IEnumerator^ Stem1251( SqlString buffer )
    {
       ArrayList^ resultCollection = gcnew ArrayList();

       resultCollection->Add( gcnew StemResult( 1, buffer ));
       resultCollection->Add( gcnew StemResult( 2, "test2 "));

       return (System::Collections::IEnumerator^)resultCollection;
    }
};
28 ноя 13, 00:23    [15202726]     Ответить | Цитировать Сообщить модератору
 Re: does not match SQL declaration  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
всем спасибо, в мелкософте затейники ключевое слово шарпа out заменили на %

    static void StemResultSet_FillRow( Object^ obj, SqlInt64 %hashWord, SqlString %partWord ) 
28 ноя 13, 00:50    [15202821]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить