Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MS SQL хранимка на c# / 3 сообщений из 3, страница 1 из 1
16.04.2007, 13:13
    #34463288
Дикий Билл
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL хранимка на c#
Код: plaintext
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.
using System;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
using System.Collections;

namespace Roman.SqlAssemblies
{
    public class Raspred
    {
        [SqlProcedure]
        public static void GetRaspred()
        {
            try
            {
                using (SqlConnection cn = new SqlConnection("context connection=true"))
                {
                    cn.Open();
                    string sql = "SELECT 10,1,'11_1' union select 20,2,'22_2' union select 30,3,'33_3'";
                    SqlCommand cmd = new SqlCommand(sql, cn);
                    ArrayList dbRecs = new ArrayList();
                    SqlDataReader sqlDr =cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    if (sqlDr.HasRows)
                    {
                        foreach (DbDataRecord rec in sqlDr)
                        {
                            dbRecs.Add(rec);
                        }
                    }

                    SqlPipe pipe = SqlContext.Pipe;
                    bool firstrow = true;
                    foreach (DbDataRecord rec in dbRecs)
                    {
                        SqlDataRecord row = new SqlDataRecord(new SqlMetaData("col1", SqlDbType.Int),
                            new SqlMetaData("col2", SqlDbType.Int), new SqlMetaData("col3", SqlDbType.VarChar,  50 ));
                        row.SetInt32( 0 ,rec.GetInt32( 0 ));
                        row.SetInt32( 1 , rec.GetInt32( 1 ));
                        row.SetString( 2 , rec.GetString( 2 ));
                        if (firstrow)
                        {
                            pipe.SendResultsStart(row);
                            firstrow = false;
                        }
                        else
                            pipe.SendResultsRow(row);
                    }
                    pipe.SendResultsEnd();
                }
            }
            catch (Exception e)
            {
                SqlPipe pipe = SqlContext.Pipe;
                pipe.Send("Error occurred executing command:");
                pipe.Send(e.Message);
                pipe.Send(e.StackTrace);
            }
        }
    }

    
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE ASSEMBLY Raspred
FROM 'd:\csharpclasses\Raspred.dll'
WITH PERMISSION_SET = SAFE;
GO
CREATE PROCEDURE GetRaspred
AS
EXTERNAL NAME Raspred.[Roman.SqlAssemblies.Raspred].GetRaspred;
почему-то первую строку не возвращает!!
только
20,2,'22_2'
30,3,'33_3'
Что не так??
...
Рейтинг: 0 / 0
16.04.2007, 22:40
    #34464869
AVI
AVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL хранимка на c#
The SendResultsStart method marks the beginning of a result set, and uses the record parameter to construct the metadata that describes the result set. All the subsequent rows, sent using the SendResultsRow method, must match that metadata definition.
...
Рейтинг: 0 / 0
17.04.2007, 11:44
    #34465819
Дикий Билл
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL хранимка на c#
Спасибо.
Меня ввела в заблуждение книга "Pro SQL Server 2005 Assemblies Copyright © 2006 by Robin Dewson and Julian Skinner".
В ней такой текст

To do this, you call SendResultsStart to send
the first row, SendResultsRow for all subsequent rows, and finally SendResultsEnd when you’re
finished.

и пример потом соответствующий.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MS SQL хранимка на c# / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]