2009-11-13 9 views
-1

Je suis une recrue dans l'écriture de procédure stockée SQL en utilisant C#. Juste errant est-il possible de créer une méthode générale qui sera appelée dans la procédure stockée dans le même script?procédure stockée C# SQL

+0

Quel est votre serveur Sql (MySQL, Microsoft Sql Server, Oracle, etc.)? et parlez-vous d'appeler une méthode C# à partir d'une instruction SQL? Cela n'est pas possible sans un hackery extrême. – Earlz

+0

Sql Server 2005+ permet en fait un accès rapide au .NET CLR et rend l'appel de code externe plutôt trivial. –

+0

oh .. hmm .. ne me dérange pas alors lol – Earlz

Répondre

0

Vous pouvez créer un UDF dans la procédure stockée qui exécute basée sur un paramètre envoyé à la procédure stockée:

C.-À (dans votre SP)

DECLARE @var1 int 
IF @param1 = 1 THEN 
    SELECT @var1 = dbo.fn_MyUDF(@params) 
END IF 
2

Voici une page pour commencer using Sql Server stored procs for the CLR.

Et voici un Hello World example pour vous aider à démarrer. L'idée est que vous écrivez une logique complexe en utilisant un langage orienté objet de plus haut niveau, puis que de simples appels provenant de vos process stockés dans Sql Server exécutent cette logique dans le CLR.

0

La procédure CLR est comme n'importe quelle autre procédure stockée, et il en va de même pour les fonctions. Une fois déployés dans la base de données, ils sont accessibles à votre script et à vos requêtes. Disons que vous créez une méthode C# dans une classe:

class Foo 
{ 
public static void Bar() 
{ 
    // Awesome code goes here 
} 
} 

Vous pouvez compiler cette classe dans une DLL d'assemblage, dites MyClasses.DLL, puis chargez le aseembly dans la base de données en utilisant CREATE ASSEMBLY MyClasses FROM, déclarer la procédure avec CREATE PROCEDURE Bar EXTERNAL MyClasses.Foo.Bar. alors votre script peut simplement appeler la procédure avec EXEC Bar;.

Visual Studio peut simplifier tout ce processus, le type de projet SQL Server peut déployer l'assembly et déclarer les types de procédures/fonctions/données contenus.

Il y a plus de détails une fois que vous commencez à digg dans, comme l'utilisation correcte des attributs comme SqlProcedureAttribute ou SqlFunctionAttribute dans votre code C# etc etc

Pour commencer, je vous recommande des articles MSDN comme Using CLR Integration in SQL Server 2005, Common Language Runtime (CLR) Integration Programming Concepts et jetez un oeil aux échantillons dans Usage Scenarios and Examples for Common Language Runtime (CLR) Integration.