Toon posts:

SQL server 2005 CLR probleempje

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedendag mensen van het goede leven,

Ik heb een probleempje met het invoegen van een stukje C# in sql server 2005. De code heb ik gecompiled en is nu dus netjes een dll deze in toegevoegd aan de database met deze code.
SQL:
1
2
3
CREATE ASSEMBLY strconcat 
FROM 'H:\strconcat.dll' 
WITH PERMISSION_SET = SAFE

Nu komt de clue van het verhaal. Ik weet niet hoe ik in sql server bij de code kom...
ik heb gepoogd er een functie van te maken en heb overal op het net rondgekeken voor eventueel een tutorial of dergelijk maar tot noch niet succesvol geweest en over het algemeen vooral errors gekregen bij het maken van de functie. (wel wat gevonden op msdn maar voor mij wartaal)

SQL:
1
2
3
CREATE FUNCTION Functie1
RETURNS VARCHAR(2000)
AS EXTERNAL NAME :1


:1 = Het punt waar ik niet weet wat ik in moet vullen. :(


Hier nog de code die zich in mijn dll bevind als dat zou kunnen helpen.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using System;

using System.Collections.Generic;

using System.Data.SqlTypes;

using System.IO;

using Microsoft.SqlServer.Server;


[Serializable]
    
[SqlUserDefinedAggregate(Format.UserDefined, MaxByteSize = 8000)]

public struct strconcat : IBinarySerialize
{
    private List<string> values;

    public void Init()
    {

        this.values = new List<string>();
    }

    public void Accumulate(SqlString value)
    {

        this.values.Add(value.Value);

    }

    public void Merge(strconcat value)
    {

        this.values.AddRange(value.values.ToArray());

    }

    public SqlString Terminate()
    {

        return new SqlString(string.Join(", ", this.values.ToArray()));

    }

    public void Read(BinaryReader r)
    {

        int itemCount = r.ReadInt32();

        this.values = new List<string>(itemCount);

        for (int i = 0; i <= itemCount - 1; i++)
        {

            this.values.Add(r.ReadString());

        }

    }

    public void Write(BinaryWriter w)
    {

        w.Write(this.values.Count);

        foreach (string s in this.values)
        {

            w.Write(s);

        }

    }

}


Ik hoop echt dat iemand mischien een paar antwoorden heeft _/-\o_ , alvast bedankt.

Acties:
  • 0 Henk 'm!

  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 17:51
nevermind

[ Voor 96% gewijzigd door MMUilwijk op 18-04-2011 14:50 ]

Everytime I suffer I become a better man because of it


Acties:
  • 0 Henk 'm!

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Volgens mij staat hier: http://geekswithblogs.net/tonyt/articles/70274.aspx uitgelegd hoe je die aggregate binnen sql bekend moet maken.

[ Voor 3% gewijzigd door eek op 01-05-2011 19:10 ]

Skill is when luck becomes a habit.