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

Откуда:
Сообщений: 113
есть ХР типа
if a=1  execute dbo.a1
if a=2  execute dbo.a2
и т.п.

все работает и выдаёт результаты разных запросов
Но как только появляется строка
execute dbo.a3____ @vix OUTPUT


на выходе процедуры ничего кроме значения @vix уже не появляется.
Вопрос: как получить результат dbo.a3____ в виде строки без употребления OUTPUT или что бы на выход передавались dbo.a1 или dbo.a1 ?
10 апр 15, 08:47    [17496806]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
2 раза прочитал...ничего не понял
10 апр 15, 09:09    [17496840]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
sahard
Member

Откуда:
Сообщений: 113
execute dbo.a3____  @vix OUTPUT
if a=1  execute dbo.a1
if a=2  execute dbo.a2


В результате работы процедура возвращает значение переменной @vix
А нужно, что бы возвращался результат выполнение процедуры dbo.a1 или dbo.a2

Если первой строки в процедуре нет, то так и происходит.
Как сделать, что бы и с первой строкой выводился результат выполнение процедуры dbo.a1 или dbo.a2 ?
10 апр 15, 09:20    [17496872]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
ЦБ
Member [заблокирован]

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

Где, в какой программе, и как вы тестируете?
10 апр 15, 09:23    [17496882]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
sahard
В результате работы процедура возвращает значение переменной @vix

ересь...в вашем коде нет вывода переменной @vix, вы лишь вызвали процедуру с output-параметром!
кроме того, кто сказал, что должен был произойти вызов dbo.a1 и dbo.a2, если они по условию отрабатывают...
в общем у вас в голове каша какая-то...и бардак в коде!
10 апр 15, 09:29    [17496905]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
sahard
Member

Откуда:
Сообщений: 113
ЦБ
sahard,

Где, в какой программе, и как вы тестируете?


В PHP.
вот такой вызов
$result=sqlsrv_query($conn,$g,$params,array("Scrollable"=>'keyset'));


В манагемент студио выдает и результат работы dbo.a1 и значение переменной @vix.
10 апр 15, 09:42    [17496956]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
sahard
Member

Откуда:
Сообщений: 113
Knyazev Alexey
sahard
В результате работы процедура возвращает значение переменной @vix

ересь...в вашем коде нет вывода переменной @vix, вы лишь вызвали процедуру с output-параметром!


Вывода переменной нету, а в выходе она есть. Вот и чешу затылок.

Knyazev Alexey
sahard
В результате работы процедура возвращает значение переменной @vix

кроме того, кто сказал, что должен был произойти вызов dbo.a1 и dbo.a2, если они по условию отрабатывают...


Так без первой строки все Ок.

Knyazev Alexey
sahard
В результате работы процедура возвращает значение переменной @vix

в общем у вас в голове каша какая-то...и бардак в коде!

Что есть, то есть
10 апр 15, 09:47    [17496981]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
Glory
Member

Откуда:
Сообщений: 104760
sahard
В манагемент студио выдает и результат работы dbo.a1 и значение переменной @vix.

Еще раз. Приведенный вам скрипт ничего не выдает.
А то, что делается внутри процедур - неизвестно
10 апр 15, 09:48    [17496983]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
sahard
Member

Откуда:
Сообщений: 113
Glory
sahard
В манагемент студио выдает и результат работы dbo.a1 и значение переменной @vix.

Еще раз. Приведенный вам скрипт ничего не выдает.
А то, что делается внутри процедур - неизвестно


В смысле "не должен выдавать?" В этом смысле Вы, наверное, правы.
Но без первой строки все прекрасно работает. Выдает результаты разных запросов к таблице.
(Т.е. вызывает разные процедуры, а в них уже запросы)
вот к примеру процедура dbo.a1
ALTER PROCEDURE [dbo].[a1]
@sl VARCHAR(1000)
AS SELECT tn10 AS [rt], opis31 AS [пример]
FROM    dbo.op
WHERE  CONTAINS(op, @sl) 


А вот если вставить первую строку, то грабли
10 апр 15, 09:57    [17497018]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
ЦБ
Member [заблокирован]

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

set nocount on в начале ХП впиши
и в зависимости от того как возвращается @vix (где это, б#@# в примере?!) может понадобится NextRecordset
10 апр 15, 09:57    [17497022]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
Glory
Member

Откуда:
Сообщений: 104760
sahard
В смысле "не должен выдавать?"

В прямом. В приведенном вами скрипте нет ни одной команды "выдавать"

sahard
Но без первой строки все прекрасно работает. Выдает результаты разных запросов к таблице.

Если в одном приложении работает - "В манагемент студио выдает и результат работы dbo.a1 и значение переменной @vix.", а в другом не работает, то как вы думаете, в чем может быть проблема ?
10 апр 15, 10:00    [17497035]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
sahard
Member

Откуда:
Сообщений: 113
Glory
sahard
В смысле "не должен выдавать?"

В прямом. В приведенном вами скрипте нет ни одной команды "выдавать"

sahard
Но без первой строки все прекрасно работает. Выдает результаты разных запросов к таблице.

Если в одном приложении работает - "В манагемент студио выдает и результат работы dbo.a1 и значение переменной @vix.", а в другом не работает, то как вы думаете, в чем может быть проблема ?


Знал бы :)) (кривые руки это само собой)
Мне непонятно почему переменная @vix в результат работы процедуры попадает ?
10 апр 15, 10:09    [17497064]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
Glory
Member

Откуда:
Сообщений: 104760
sahard
Мне непонятно почему переменная @vix в результат работы процедуры попадает ?

Потому, что ваше приложение так обрабатывает полученные от сервера результаты
10 апр 15, 10:13    [17497084]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
sahard
Member

Откуда:
Сообщений: 113
ЦБ
sahard,

set nocount on в начале ХП впиши
может понадобится NextRecordset


вряд ли
там проблема рисуется при
$p=sqlsrv_field_metadata($result);


типа нет второго поля в результате вызова
а правильный sqlsrv_field_metadata получится только после вызова dbo.a1 или dbo.a2 .
а они разные поля выдают в результат.
10 апр 15, 10:20    [17497107]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
Glory
Member

Откуда:
Сообщений: 104760
sahard
а они разные поля выдают в результат.

Это проблемы вашего кода. Это не проблемы сервера.
10 апр 15, 10:23    [17497128]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
sahard
Member

Откуда:
Сообщений: 113
Glory
sahard
Мне непонятно почему переменная @vix в результат работы процедуры попадает ?

Потому, что ваше приложение так обрабатывает полученные от сервера результаты


Да это понятно.
Вопрос то, собственно: можно ли как то не выводить в результат работы функции значение переменной @vix ?
я так понимаю, что проблема в присвоении этой переменной OUTPUT
10 апр 15, 10:25    [17497144]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
Glory
Member

Откуда:
Сообщений: 104760
sahard
Вопрос то, собственно: можно ли как то не выводить в результат работы функции значение переменной @vix ?

Почему вы тогда задаете этот вопрос в этом форуме ?

sahard
я так понимаю, что проблема в присвоении этой переменной OUTPUT

Проблема в вашем клиентском коде, а не в серверной команде
10 апр 15, 10:27    [17497161]     Ответить | Цитировать Сообщить модератору
 Re: Процедура выводит не то, что нужно  [new]
sahard
Member

Откуда:
Сообщений: 113
Glory
sahard
а они разные поля выдают в результат.

Это проблемы вашего кода. Это не проблемы сервера.


Дак я его и не веню.
Просто сначала делается один запрос, и по результату формировать другой.
10 апр 15, 10:29    [17497168]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить