powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MS SQL хранимка на c#
3 сообщений из 3, страница 1 из 1
MS SQL хранимка на c#
    #34463288
Фотография Дикий Билл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
MS SQL хранимка на c#
    #34464869
AVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
MS SQL хранимка на c#
    #34465819
Фотография Дикий Билл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Меня ввела в заблуждение книга "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
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MS SQL хранимка на c#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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