SQL 사용 Server 2005 CLR 저장 프로시저 SQL Server 2005 의 새로운 특성 은 바로.net 을 통합 시 켰 다 는 것 이다. 라 고 외 쳤 다.통합 CLR 의 장점 은 개발 자가 익숙 한.net 을 편리 하 게 사용 할 수 있다 는 것 이다. 언어 는 저장 프로 세 스,트리거,사용자 정의 함수 등 을 만 듭 니 다.본 논문 에서 C\#로 저장 과정 을 만 들 것 입 니 다.왜 T-SQL 로 저장 과정 을 만 들 지 않 습 니까?T-SQL 이 지금까지 발전 한 지 오래 되 었 기 때문에 특정한 상황 에서 한계 가 있다.예 를 들 어 T-SQL 은 대상 을 대상 으로 하 는 것 이 아니 라 일부 문법 이 너무 복잡 하 다 는 등 이다.대상 지향.NET 을 사용 하면 저장 프로 세 스 등 데이터 대상 을 언어 로 작성 할 때.net 때문에 언어 가 강 한 특성 때문에 더욱 건장 하고 우수한 저장 과정 을 쓸 수 있다.SQL 을 통 해 Server 2005.NET 로 작 성 된 저장 과정 은.NET 언어 로 일반 응용 프로그램 을 작성 하 는 것 과 마찬가지 로 모두 managed 입 니 다. code。이외에 CLR 프로 그래 밍 언어 제공 T-SQL 에 없 는 풍부 한 구조(예 를 들 어 배열 과 목록 등)....과 T-SQL(해석 언어)에 비해 CLR 프로 그래 밍 언어 가 더 좋 은 성능 을 가 진 이 유 는 위탁 관리 코드 가 컴 파일 되 었 기 때문이다.산술 계산,문자열 처리,조건 논리 등 과 관련 된 조작 에 있어 서 위탁 관리 코드 의 성능 이 좋 을 수 있 습 니 다. T-SQL 수량 급본 논문 에서 T-SQL 로 저장 과정 을 작성 할 수 있 지만 문 제 를 설명 하기 위해 C\#로 저장 과정 을 작성 합 니 다.절 차 는 다음 과 같다. 우선 비 주 얼 열기 Studio 2005 beta 2.c\#언어 를 선택 하고 database 프로젝트 를 새로 만 듭 니 다.sqlprocject 1 이 라 고 합 니 다.이때,비 주 얼 Studio 2005 beta 2.어떤 데이터 베 이 스 를 연결 해 야 하 는 지 물 어 볼 것 이다.우 리 는 pubs 라 는 데이터 베 이 스 를 사용 하기 때문에 우 리 는 기계 이름 이 로 컬 기계 라 는 것 을 선택 하고 sql 의 검증 방식 을 설정 하여 pubs 데이터 베 이 스 를 선택 하면 됩 니 다.(SQL Server 2005 년 에 pubs 와 northwind 데이터 베 이 스 는 더 이상 SQL 이 아니다. Server 2005 자체 데이터베이스 입 니 다.http://go.microsoft.com/fwlink/?LinkId=31995가다이 어 공사 가 끝 난 후 추가 항목 을 선택 하고 store 를 선택 하 십시오. procedure 저장 과정 을 authors.cs 로 명명 하고 확인 을 누 르 고 다음 코드 를 입력 하 십시오. using System; using System.Data; using System.Data.Sql; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.Data.SqlClient; public partial class StoredProcedures { [Microsoft.SqlServer.Server.SqlProcedure] public static void GetAuthors() { SqlPipe sp = SqlContext.Pipe; using (SqlConnection conn = new SqlConnection("context connection=true")) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.CommandText = "Select DatePart(second, GetDate()) " + " As timestamp,* from authors"; SqlDataReader rdr = cmd.ExecuteReader(); sp.Send(rdr); } } [SqlProcedure] public static void GetTitlesByAuthor(string authorID) { string sql = "select T.title, T.price, T.type, " + "T.pubdate from authors A" + " inner join titleauthor TA on A.au_id = TA.au_id " + " inner join titles T on TA.title_id = T.title_id " + " where A.au_id = '" + @authorID + "'"; using (SqlConnection conn = new SqlConnection("context connection=true")) { conn.Open(); SqlPipe sp = SqlContext.Pipe; SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.CommandText = sql; SqlParameter paramauthorID = new SqlParameter("@authorID", SqlDbType.VarChar, 11); paramauthorID.Direction = ParameterDirection.Input; paramauthorID.Value = authorID; cmd.Parameters.Add(paramauthorID); SqlDataReader rdr = cmd.ExecuteReader(); sp.Send(rdr); } } }