SQL Server CLRÈ«¹¦ÂÔÖ®¶þ
´ÓÕâÒ»½Ú¿ªÊ¼ÄØ£¬ÎÒÃǾÍÒª¿ªÊ¼CLRµÄ±à³ÌÖ®ÂÃÁË¡£ÔÚÕâ֮ǰ£¬ÎÒÏȰѱ¾½ÚÖÐÐèÒªÁ˽âµÄÁ½¸öÐÂÀàSqlDataRecordºÍSqlMetaData£¬¼°Îå¸öз½·¨SqlContext.Pipe.SendResultsStart£¬SqlContext.Pipe.SendResultsRow£¬SqlContext.Pipe.SendResultsEnd£¬SqlContext.Pipe.SendºÍSqlContext.Pipe.ExecuteAndSend½øÐÐһϱØÒªµÄ˵Ã÷£¬·½±ã´ó¼ÒÔĶÁºóÐøµÄ´úÂë¡£
Ê×ÏÈSqlDataRecordºÍSqlMetaDataÊÇÊý¾Ý¼¯ºÏºÍÔÊý¾ÝµÄÒâ˼¡£¿ÉÒÔ¼òµ¥µÄ°ÑSqlDataRecordÀí½â³ÉDataTable£¬°ÑSqlMetaDataÀí½â³ÉDataColumn¡£ÎÒÃÇÔÙÏòSqlDataRecordÀïÃæÌî³äÊý¾Ý֮ǰҪÏÈÖ´ÐÐSqlContext.Pipe.SendResultStart()·½·¨£¬¸æËßÊý¾Ý¿âÏÂÃæ¿ªÊ¼Ìî³äÊý¾Ý£¬Ê¹ÓÃSqlContext.Pipe.SendResultRow·½·¨À´Ìî³äÊý¾Ý£¬Ìî³ä½áÊøºóʹÓÃSqlContext.Pipe.SendResultEnd·½·¨À´½áÊøÌî³ä¡£ÕâЩ¶¼ÊÇ»ù±¾Á÷³Ì£¬Ã»Ê²Ã´ºÃ½âÊ͵ģ¬Ö»ÒªÕÕ×ÅÈ¥×ö¾Í¿ÉÒÔÁË¡£
SqlContext.Pipe.SendÊÇÏò¿Í»§¶Ë·¢ËÍÒ»Ìõ½á¹û£¬SqlContext.Pipe.ExecuteAndSendÊÇÖ´ÐÐÒ»ÌõÓï¾ä¡£
ÏÂÃæÎÒ½«Óü¸¸öʵ¼ÊµÄ¼òµ¥Àý×ÓÀ´ËµÃ÷ÈçºÎʹÓÃÕ⼸¸ö·½·¨¡£
1.ʹÓÃSqlContext.Pipe.Send¹¹½¨ÎÞ²ÎÎÞ·µ»ØÖµµÄ´æ´¢¹ý³Ì
[Microsoft.SqlServer.Server.SqlProcedure]
public static void USP_SayHello()
{
SqlContext.Pipe.Send("USP:Hello TJVictor!");
}
2.ʹÓÃSqlContext.Pipe.Send¹¹½¨´ø²ÎÎÞ·µ»ØÖµµÄ´æ´¢¹ý³Ì
[Microsoft.SqlServer.Server.SqlProcedure]
public static void USP_SayHelloByParameter(SqlString msg)
{
SqlContext.Pipe.Send(msg.ToString());
}
3.ʹÓÃSqlContext.Pipe.Send¹¹½¨´ø²ÎÓзµ»ØÖµµÄ´æ´¢¹ý³Ì
[Microsoft.SqlServer.Server.SqlProcedure]
public static SqlInt32 USP_SayHelloByReturn(SqlString msg)
{
return msg.ToString().Length;
}
4.ʹÓÃSqlCommandÀ´Ö´ÐÐÓï¾ä£¬×¢ÒâÕâÀïʹÓÃÁËSQL Server×Ô´øµÄpubsÊý¾Ý¿â
[Microsoft.SqlServer.Server.SqlProcedure]
public static void USP_ExecuteBySqlCommand(SqlString stor_id, SqlString stor_name)
{
//ÓÉÓÚ³ÌÐòÊÇÔÚSQL ServerÄÚÖ´ÐУ¬ËùÒÔÁ¬½Ó×Ö·û´®Ð´³É"context connection=true"¼´¿É
using (SqlConnection con = new SqlConnection("context connection=true"))
{
con.Open
Ïà¹ØÎĵµ£º
ÕâÀï½éÉÜsql server2005ÀïÃæµÄÒ»¸öʹÓÃʵÀý£º
CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int)
INSERT tb SELECT 'ÉÂÎ÷','Î÷°²',3
UNION ALL SELECT 'ÉÂÎ÷','°²¿µ',4
UNION ALL SELECT 'ÉÂÎ÷','ººÖÐ',2
UNION ALL SELECT '¹ã¶«','¹ãÖÝ',5
UNION ALL SELECT '¹ã¶«','Ö麣',2
UNION ......
drop table #t
create table #t(req_spid int,obj_name sysname)
declare @s nvarchar(4000)
,@rid int,@dbname sysname,@id int,@objname sysnam ......
1. SQLÓÅ»¯µÄÔÔòÊÇ£º
½«Ò»´Î²Ù×÷ÐèÒª¶ÁÈ¡µÄBLOCKÊý¼õµ½×îµÍ,¼´ÔÚ×î¶ÌµÄʱ¼ä´ïµ½×î´óµÄÊý¾ÝÍÌÍÂÁ¿¡£
µ÷Õû²»Á¼SQLͨ³£¿ÉÒÔ´ÓÒÔϼ¸µãÇÐÈ룺
¼ì²é²»Á¼µÄSQL£¬¿¼ÂÇÆäд·¨ÊÇ·ñ»¹ÓпÉÓÅ»¯ÄÚÈÝ
¼ì²é×Ó²éѯ ¿¼ÂÇSQL×Ó²éѯÊÇ·ñ¿ÉÒÔÓüòµ¥Á¬½Óµ ......
Ñ¡Ôñ10gÊÇÒòΪ¶ÔÍø¸ñ¼¼Êõ±È½ÏºÃÆæ£¬ºÃÏñ»¹Ã»µÃµ½¹ã·ºÓ¦Óã¬Ò²¾ÍÎÞËùνÓëÇ°Ãæ°æ±¾ÓкܴóÇø±ðÁË¡£
ÔÚѸÀ×ÉÏÏÂÁ˸öÈí¼þ£¬ÔËÐÐsqlplusw£¬È»ºóÕÕ×ÅÊ飬¿ñÇÃÁËÒ»·£¬ÓÐÔÚÍøÉÏÏÂÁ˸öÊÓÆµ½Ì³Ì£¨MLDNħÀֿƼ¼_Oracle¿ÎÌã©£¬½²µÃͦºÃµÄ£¬¾ÍÊÇʱ¼ä³¤Á˵㣬²»Èç¿´ÊéÀ´µÃ¿ì¡£·´ÕýÏÖÔÚÖ»ÊÇÏëÊìϤһÏ»ù±¾Óï¾ä¡£
¿´ÁËÁ½ÌìÊéÁË¡£Á˽âÁËÒ» ......
ιʶøÖªÐ£¬¹ûÈ»Èç´Ëѽ£¬µÚ¶þ´ÎÔÙ·¿ªÍ¬ÑùµÄÄÚÈݹûÈ»Óв»Í¬µÄÊÕ»ñ£¬ÓÐЩÊǵÚÒ»´Î¿´µÄʱºòûÓÐ×ÐϸÀí½âµÄ£¬»¹ÓÐЩ¿ÉÄÜÊÇÔÚµÚÒ»´Î¿´´Ò´Ò¾ÍÌø¹ýµÄ£¬µ±È»£¬¿ÉÄÜ»¹Óв¿·ÖÊÇ×Ô¼ºµ±Ê±¼ÇסÁËÍêÁËÓÖ¸øÍü¼ÇÁË¡£½ñÌìµÚ¶þ´Î¿´µ½×Ó³ÌÐòÕâÒ»Õ½ڣ¬·¢ÏÖÁËЩеÄÄÚÈÝ£¬ºÇºÇ¡£ÔÚÕâÀïÎÒ¾ÍдÏÂһЩ»ù±¾ÄÚÈݺÍÈÝÒ×Íü¼ÇµÄ£¬ÃâµÃÏ´ÎÓÖ¸øÍüÁË¡£ÄÚ ......