C # SQL хранимая процедура - PullRequest
0 голосов
/ 13 ноября 2009

Я новичок в написании хранимой процедуры SQL с использованием C #. Просто блуждать, есть ли способ, как я мог бы создать общий метод, который будет вызываться в хранимой процедуре в том же сценарии?

Ответы [ 3 ]

2 голосов
/ 13 ноября 2009

Здесь находится страница для начала работы с использованием хранимых процедур Sql Server для CLR .

А вот пример Hello World , с которого можно начать.

Идея состоит в том, что вы пишете сложную логику с использованием объектно-ориентированного языка более высокого уровня, а затем просто выполняете простые вызовы из ваших хранимых процедур в Sql Server, чтобы выполнить эту логику в CLR.

0 голосов
/ 13 ноября 2009

CLR-процедура аналогична любой другой хранимой процедуре и относится к функциям. После развертывания в базе данных они доступны для вашего сценария и ваших запросов. Допустим, вы создали метод C # в классе:

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

Вы можете скомпилировать этот класс в сборочную DLL, скажем, MyClasses.DLL, а затем загрузить сборку в базу данных, используя CREATE ASSEMBLY MyClasses FROM, объявив процедуру с помощью CREATE PROCEDURE Bar EXTERNAL MyClasses.Foo.Bar. тогда ваш скрипт может просто вызвать процедуру с помощью EXEC Bar;.

Visual Studio может упростить весь этот процесс, тип проекта SQL Server может развернуть сборку и объявить содержащиеся в ней процедуры / функции / типы данных.

После того, как вы начнете копать, появятся дополнительные подробности, например, правильное использование таких атрибутов, как SqlProcedureAttribute или SqlFunctionAttribute в вашем коде C # и т. Д. И т. Д.

Для начала я рекомендую некоторые статьи MSDN, такие как Использование интеграции CLR в SQL Server 2005 , Концепции программирования интеграции на общеязыковом языке (CLR) и ознакомьтесь с примерами в Сценарии использования и примеры для интеграции Common Language Runtime (CLR) .

0 голосов
/ 13 ноября 2009

Вы можете создать UDF в хранимой процедуре, которая выполняется на основе параметра, отправленного в хранимую процедуру:

т.е. (в вашем ИП)

DECLARE @var1 int
IF @param1 = 1 THEN
   SELECT @var1 = dbo.fn_MyUDF(@params)
END IF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...