powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка отризательных значений(срабатывает не всегда)
9 сообщений из 9, страница 1 из 1
Выборка отризательных значений(срабатывает не всегда)
    #38063671
Mihail3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Делаю вот такую вот выборку
SQLEXEC(test, "CREATE PROCEDURE #MyProc100 " + ;
"@inpar bigint " + ;
"AS select idmater, vpar, idzap, data from prmater1 WHERE prmater1.idceh=@inpar and prmater1.vpar < 0 " )
SQLEXEC(test, "exec #myProc100 ?ing ","minus1" )

по условию в курсор minus1 должны выбраться только те записи в которых значение vpar отрицательное т.е меньше нуля, но фигушки у меня выбираются все.
Пример таблицы:
idprmater data idmater vpar
1 01.02.2012 89 1000.0000
2 03.02.2012 84 800.0000
3 03.02.2012 80 1200.0000
4 04.02.2012 85 -200.0000

idprmater--- это ID записи (bigint)
data--- сообственно дата (datetime)
idmater--- ID материала (bigint)
vpar---объем материала (decimal 18.4)

А должно по идее только
idprmater data idmater vpar
4 04.02.2012 85 -200.0000

Помогайте, я понять не могу почему, просто это иногда срабатывает так как надо, а иногда нет.

Среда разработки: VFP 9.0 + MS SQL Server 2005/
Заранее спасибо)
...
Рейтинг: 0 / 0
Выборка отризательных значений(срабатывает не всегда)
    #38063838
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mihail3Привет всем! Делаю вот такую вот выборку
SQLEXEC(test, "CREATE PROCEDURE #MyProc100 " + ;
"@inpar bigint " + ;
"AS select idmater, vpar, idzap, data from prmater1 WHERE prmater1.idceh=@inpar and prmater1.vpar < 0 " )
SQLEXEC(test, "exec #myProc100 ?ing ","minus1" )

по условию в курсор minus1 должны выбраться только те записи в которых значение vpar отрицательное т.е меньше нуля, но фигушки у меня выбираются все.
Пример таблицы:
idprmater data idmater vpar
1 01.02.2012 89 1000.0000
2 03.02.2012 84 800.0000
3 03.02.2012 80 1200.0000
4 04.02.2012 85 -200.0000

idprmater--- это ID записи (bigint)
data--- сообственно дата (datetime)
idmater--- ID материала (bigint)
vpar---объем материала (decimal 18.4)

А должно по идее только
idprmater data idmater vpar
4 04.02.2012 85 -200.0000

Помогайте, я понять не могу почему, просто это иногда срабатывает так как надо, а иногда нет.

Среда разработки: VFP 9.0 + MS SQL Server 2005/
Заранее спасибо)Зачем здесь создание процедуры? Иногда - это когда?
Что дает
Код: sql
1.
SQLEXEC(test, "select idmater, vpar, idzap, data from prmater1 WHERE prmater1.idceh=?ing and prmater1.vpar < 0 " ,"minus1" )
...
Рейтинг: 0 / 0
Выборка отризательных значений(срабатывает не всегда)
    #38064028
Mihail3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем здесь создание процедуры? Иногда - это когда?
Что дает
Код: sql
1.
SQLEXEC(test, "select idmater, vpar, idzap, data from prmater1 WHERE prmater1.idceh=?ing and prmater1.vpar < 0 " ,"minus1" )

[/quot]
Спасибо большое дает то что надо) Просто я по своей же глупости и незнанию всегда делал через процедуру. Если не трудно объясните в чем отличие, в том что в процедуру нужно пихать несколько запросов, а если он один то достаточно и просто через SQLEXEC???
...
Рейтинг: 0 / 0
Выборка отризательных значений(срабатывает не всегда)
    #38064546
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mihail3Если не трудно объясните в чем отличие, в том что в процедуру нужно пихать несколько запросов, а если он один то достаточно и просто через SQLEXEC???
Нет. В SQLExec() также можно пихать несколько запросов.

Процедура - это процедура и есть. Т.е. это создание непосредственно в базе данных на сервере некоего постоянного объекта. Ну, как создать файл PRG в FoxPro. Естесственно, делать это "на лету", в процессе работы приложения, крайне НЕ рекомендуется.
...
Рейтинг: 0 / 0
Выборка отризательных значений(срабатывает не всегда)
    #38064758
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
А можно пример, как в SQLExec() запихать несколько запросов?
...
Рейтинг: 0 / 0
Выборка отризательных значений(срабатывает не всегда)
    #38064764
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.... вдогонку...
И есть ли в этом смысл?
...
Рейтинг: 0 / 0
Выборка отризательных значений(срабатывает не всегда)
    #38064810
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для MS SQL команды разделяются либо точкой с запятой, либо просто переводом строки. Соответственно, написать можно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Local lcString
lcString = ''

* Формирую набор команд, которую пошлю на сервер
Text to lcString noshow
set nocount on
If object_id('tempdb..#test') is not null drop table #test
Create Table #test (f1 int)
Insert into #test values (1)
Insert into #test values (2)
Select * from #test
endtext

* Отправляю
=SQLEXEC(test, m.lcString,"result")

* Смотрю результа
select result
browse



Как правило, смысл появляется, если перед выполнением собственно запроса Select-SQL на сервере надо сделать нукую предварительную обработку. Ну, например, создать и заполнить временную таблицу, как в данном случае.
...
Рейтинг: 0 / 0
Выборка отризательных значений(срабатывает не всегда)
    #38065101
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
Благодарю, все понятно.
...
Рейтинг: 0 / 0
Выборка отризательных значений(срабатывает не всегда)
    #38065522
Mihail3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМПроцедура - это процедура и есть. Т.е. это создание непосредственно в базе данных на сервере некоего постоянного объекта. Ну, как создать файл PRG в FoxPro. Естесственно, делать это "на лету", в процессе работы приложения, крайне НЕ рекомендуется.
Спасибо за разъяснение)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка отризательных значений(срабатывает не всегда)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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