Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Всем доброго дня.

Таблица: (Request)
ID | Data       | XML 
1  | 2014-08-16 | <?xml version="1.0"
2  | 2014-08-16 | <?xml version="1.0"
3  | 2014-08-17 | <?xml version="1.0"
4  | 2014-08-17 | <?xml version="1.0"
5  | 2014-08-18 | <?xml version="1.0"

Есть запрос который по ID из данной таблицы вытаскивает из поля XML все необходимые данные.
SELECT Id, dbo.mGetKolSd(Id) AS KolichestvoSD INTO #ColTableTemp FROM Request WHERE Id=@Id 

Дальше идет разбор полученных данных, и после разбора, данные возвращаются в виде таблицы, количество столбцов всегда 3, а количество строчек меняется.
INSERT INTO #TempTable (Id,Cred,Treb) SELECT
		Id
		,dbo.mGetNum(Id,1)
		,dbo.mGetSdel(Id,1)
		FROM #СolTableTemp

Для выполнения запроса, нужно переменной @Id присвоить значение Id из таблицы, только одно значение !!! (если присвоить интервал значений ID, работать не будет!)

Задача: Нужно передавать в запрос ID из таблицы Request, не по одному значению, а по дате, за период?
18 авг 14, 10:50    [16454486]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
нужно переменной @Id присвоить значение Id из таблицы, только одно значение !!! (если присвоить интервал значений ID, работать не будет!)

Переменной НЕвозможно присвоить интервал значений.
18 авг 14, 10:54    [16454508]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Glory,

Задача: Нужно передавать в запрос ID, из таблицы Request.

Не нужно переменной присваивать значения, нужно что бы в мой запрос, передавались ID, из таблицы в цикле.

т.е. таблица Request, выполнил запрос: SELECT * FROM Request WHERE Data >= '2014-08-18'

--Результат:
5  | 2014-08-18 | <?xml version="1.0"

но в этом запросе SELECT * FROM Request WHERE Data >= '2014-08-18' - нужно вызвать ЗАПРОС для разбора XML, и результате получится.
--Результат: (примерно)
5  | 1315361      | Нет
5  | 2М31         | Да
5  | 201412       | Нет
5  | 208-18       | Да
18 авг 14, 11:06    [16454585]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
Не нужно переменной присваивать значения, нужно что бы в мой запрос, передавались ID, из таблицы в цикле.

Ну так передавайте. В чем конкретная проблема ?
Вы опять не можете найти в хелпе пример с циклом ?
18 авг 14, 11:09    [16454593]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
А еще лучше найдите в хелпе примеры OUTER APPLY и напишите один запрос
18 авг 14, 11:11    [16454609]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
mrGuest
Guest
Aleks_Aleks
но в этом запросе SELECT * FROM Request WHERE Data >= '2014-08-18' - нужно вызвать ЗАПРОС для разбора XML, и результате


Ну так и вызывайте раз нужно:
SELECT * FROM Request outer apply (ЗАПРОС) as F(...) WHERE Data >= '2014-08-18'
18 авг 14, 11:45    [16454834]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
mrGuest,

на месте (ЗАПРОС), нужно вставить запрос, или можно вызвать процедуру, или только функцию ?

Что значит F(...) - ?
18 авг 14, 14:44    [16456500]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Написал запрос как советовали:
SELECT R.Id, ST.Id, ST.Cred, ST.Treb FROM Request AS R OUTER APPLY dbo.mGetProced(R.Id) AS ST WHERE R.tId = @RequestId;
ругается, что данной процедуры нет. Почему ?
18 авг 14, 17:45    [16458092]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
Написал запрос как советовали:

Советовали ЗАПРОС
18 авг 14, 17:47    [16458108]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Glory,

Тот запрос, с переменными, функциями и 30-ю инсертами

как его вставить в этот запрос ?
18 авг 14, 18:09    [16458265]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
Тот запрос, с переменными, функциями и 30-ю инсертами

Запрос не может состоять из 30 инсертов
Потому что каждый инсерт есть отдельный запрос.
18 авг 14, 18:15    [16458302]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Aleks_Aleks
Не нужно переменной присваивать значения, нужно что бы в мой запрос, передавались ID, из таблицы в цикле
Aleks_Aleks
Тот запрос, с переменными, функциями и 30-ю инсертами
у вас объект dbo.mGetProced() называется запрос?
18 авг 14, 18:25    [16458351]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Shakill,

На вопрос, "Как передать одно значение и получить таблицу", был получен ответ:
SELECT * FROM Request outer apply (ЗАПРОС) as F(...) WHERE Data >= '2014-08-18'

На вопрос, "Как в предыдущий запрос вставить SQL-код разбирающий xml" - ответа не было.

В хелп был пример:
SELECT D.deptid, D.deptname, D.deptmgrid
    ,ST.empid, ST.empname, ST.mgrid
FROM Departments AS D
    CROSS APPLY fn_getsubtree(D.deptmgrid) AS ST;

SQL-код - вызывался как функция.

Вопрос: как в запросе (первый с верху) вызвать SQL-код разбирающий xml ?
18 авг 14, 18:47    [16458454]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
Вопрос: как в запросе (первый с верху) вызвать SQL-код разбирающий xml ?

Наверное оформить его как функцию ? чтобы можно было сделать вызов как в хелпе ?
18 авг 14, 18:56    [16458481]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Glory,

Это было бы хорошо)

Я вот только не знаю, как ?

Как запихнуть SQL-код разбирающий xml, с двумя переменными, с двумя временными таблицами, с двумя вызываемыми функциями, с 30-ю инсертами во временные таблицы - в функцию !?
19 авг 14, 10:14    [16460479]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
Как запихнуть SQL-код разбирающий xml, с двумя переменными, с двумя временными таблицами, с двумя вызываемыми функциями, с 30-ю инсертами во временные таблицы - в функцию !?

Руками. Прочитав предварительно в хелпе про CREATE FUNCTION

ЗЫ
Нафига делать "30- инсертов во временные таблицы" для разбора xml ?
Нехватает документированных методов работы с xml ?
19 авг 14, 10:49    [16460698]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Glory
Руками. Прочитав предварительно в хелпе про CREATE FUNCTION

Читал, может не внимательно. В функции был один зпрос, про инсерт, временную таблицу - там ни чего не сказано.

Glory
ЗЫ
Нафига делать "30- инсертов во временные таблицы" для разбора xml ?
Нехватает документированных методов работы с xml ?

Вы не видели этот xml, и не видели какие требования предъявили по извлечению данных.

В картинке ниже, показано, как реагирует создаваемая функция, на добавление кода для разбора xml:

К сообщению приложен файл. Размер - 131Kb
19 авг 14, 11:26    [16461016]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
В картинке ниже, показано, как реагирует создаваемая функция, на добавление кода для разбора xml:

На картинке видно полное игнорирование вами хелпа.

Aleks_Aleks
Вы не видели этот xml, и не видели какие требования предъявили по извлечению данных.

Видел. Я же считал содержимое файла и требования прямо из вашего мозга.
Также я увидел у вас в мозгу полное отсутствие информации о методах работы с xml в MSSQL.
19 авг 14, 11:30    [16461058]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Aleks_Aleks
Вы не видели этот xml, и не видели какие требования предъявили по извлечению данных.

Это был ответ на вопрос
Glory
ЗЫ
Нафига делать "30- инсертов во временные таблицы" для разбора xml ?
Нехватает документированных методов работы с xml ?

- потому что по другому никак нельзя, мне знаете скучно, и я усложняю себе жизнь, да еще у меня на это времени вагон...
Glory
На картинке видно полное игнорирование вами хелпа.

Очень полезная информация... а как я обожаю эти рекомендации, по получению образования, получению нобелевской премии, и изучению мастера и Маргариты...
А прямо, в одном предложении указать, что именно там не так !?
Пол страницы форума, была потрачена на выяснение, кто кому что должен, и лишь один, два, ответа были по теме...
Огромное спасибо всем за помощь, все понял, буду сам разбираться...
19 авг 14, 12:06    [16461425]     Ответить | Цитировать Сообщить модератору
 Re: Передача одного параметра а возврат таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
- потому что по другому никак нельзя, мне знаете скучно, и я усложняю себе жизнь, да еще у меня на это времени вагон...

Я не знаю, как по-другому и по-другому никак нельзя - это разные вещи

Aleks_Aleks
Очень полезная информация... а как я обожаю эти рекомендации, по получению образования, получению нобелевской премии, и изучению мастера и Маргариты...

Конечно, удобно, когда вместо чтения одного абзаца одной главы, вам ее перескажут

Aleks_Aleks
Огромное спасибо всем за помощь, все понял, буду сам разбираться...

Успехов. Побольше инсертов главное сделайте
19 авг 14, 12:13    [16461474]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить