powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Хранимая процедура SQL 2005 возвратить параметр ?
20 сообщений из 20, страница 1 из 1
Хранимая процедура SQL 2005 возвратить параметр ?
    #33907988
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть хранимка в SQL 2005

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Create PROCEDURE [dbo].[sp_lsost_Isperiod] 
	 @ddateBegin datetime  
	, @ddateEnd datetime = @ddateBegin
	,@retVal int =  5  output 
as
BEGIN
	IF EXISTS(SELECT [lsost].[lsostid] FROM lsost WHERE lsost.ddate BETWEEN @ddateBegin AND @ddateEnd )
		begin 
			select @retVal =  0 
		end 
	ELSE 
		begin 
			select @retVal =  1 
		end
END

в манаджмент студио все нормально отрабатывает и возвращает все нормально...

Вызываю ее из фокса

Код: plaintext
1.
2.
nlIsperiod =  5 
clExec= " EXECUTE ?@nlIsperiod = [dbo].[sp_lsost_Isperiod] ?dlCalcDate  " 
nlExec = SQLExec(this.dbconnhandle, clExec , "crIsPerSQL")

в результате nlIsperiod
не изменяется .

в чем может быть баг? не могу найти.
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908050
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс
Вызываю ее из фокса

Код: plaintext
1.
2.
nlIsperiod =  5 
clExec= " EXECUTE ?@nlIsperiod = [dbo].[sp_lsost_Isperiod] ?dlCalcDate  " 
nlExec = SQLExec(this.dbconnhandle, clExec , "crIsPerSQL")


Странный вызов... Я пишу что-то навроде такого:

Код: plaintext
clExec= " EXEC [dbo].[sp_lsost_Isperiod]  ?ldBeginDate, ?ldEndDate, ?@lnResult" 
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908080
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так тоже самое, :
в результате nlIsperiod
не изменяется .
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908110
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я бы попробовал изменить SP:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Create PROCEDURE [dbo].[sp_lsost_Isperiod] 
	 @ddateBegin datetime , 
	 @ddateEnd datetime,
	 @retVal int = 1  output 
as
SELECT [lsost].[lsostid] FROM lsost WHERE lsost.ddate BETWEEN @ddateBegin AND @ddateEnd 
IF @@ROWCOUNT> 0 
  set @retVal =  0 
ELSE 
  set @retVal =  1 
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908133
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если данные есть и их много то такая хранимка будет все их отбирать.
а значит будет дольше работать.
нужно только знать есть они или нет.
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908185
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey ChНу я бы попробовал изменить SP:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Create PROCEDURE [dbo].[sp_lsost_Isperiod] 
	 @ddateBegin datetime , 
	 @ddateEnd datetime,
	 @retVal int = 1  output 
as
SELECT [lsost].[lsostid] FROM lsost WHERE lsost.ddate BETWEEN @ddateBegin AND @ddateEnd 
IF @@ROWCOUNT> 0 
  set @retVal =  0 
ELSE 
  set @retVal =  1 


на сервере это все отрабатывает и значение возвращает....
в фоксе получить не могу....
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908258
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 в селект дополнительно top 1 - меньше тарабанить будет
2 последней строкой select @retVal
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908308
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не помогает, курсор тоже не возвращает....
не понимаю почему може быть дело в каких то настройках?
другие храники нормально работают с этой такая фигня
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908367
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс ...другие храники нормально работают с этой такая фигня
А если для проверки создать абсолютно новую процедуру (то есть с новым именем) и попробовать с ней?

А права у Вас все есть к этой процедуре и она в правильной базе данных?
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908415
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прав не меньше чем к остальным,
к томуже на сервере то все отрабатывает (в смысле в манаджмент студии) так как надо
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908427
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно
вот сделал тестовую процу
Код: plaintext
1.
2.
3.
4.
5.
create  procedure test_proc
@inVal int = 1 ,
@retVal int = 1  output 
as
select @retVal = @inVal
return  0 

в фоксе

Код: plaintext
1.
2.
3.
4.
PUBLIC ret
ret= 0 
sqlexec( 1 ,'exec test_proc 2,?@ret')
? ret
У меня все работает - а что даст этот вариант у вас ?
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908749
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это отрабатывает
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33908787
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упсдругие храники нормально работают с этой такая фигня
1.эти хранимки тоже с output'ом ?
2. sqlexec при выполнении что возвращает -может ошибку ?
3. как объявлена переменная nlIsperiod - если локальная-попробуйте привате или паблик
ну и неплохо-бы посмотреть профалером что происходит при выполнении
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33909002
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проанализировал,
в общем видимо дело в следующем:

sqlexec вызывается из другого класса,
в качестве эксперимента обьявил переменную в том методе где sqlexec вызывается - тогда переменная меняется,
а обьявленную из другого метода Public переменную не меняет....

что делать?
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33909089
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно навести порядок с переменными.
где-то происходит перекрытие.
как вариант
-обьявить паблик в ините или лоаде если это форма, и больше нигде ее не переобъявлять.
-Если это невизуальный класс - объявление сделат перед созданием.
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33909662
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переменную обьявил public в ините все заработало.
может кто нибудь обьяснить почему именно так все работает.
разве не все равно, public он и есть public ?
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33909835
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вы уверены что метод в котором переменная у вас обьявляется выполняется раньше, чем тот в котором выполняется SQL ?
скорее всего вы сначала выполняете SQL фокс создает переменную, а потом в другом методе вы ее переопределяете - вот и косяк.
С пабликами нужно быть осторожнее.
Если уж они вам нужны - обьявляйте на самом "верхнем " уровне. А лучше вообще от них отказаться.
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33910077
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как бы так написать чтобы отказаться....
переменную то надо вернуть из хранимки
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33910197
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да ради бога - если уж нужно , то нужно .
У самого есть Паблики.
Просто стараюсь их объявление вынести "повыше".
например я их объявляю в главной проге.

незнаю в чем состоит задача,
но в данном конкретном случае из ХП вы получите курсор
Код: plaintext
1.
SELECT [lsost].[lsostid] FROM lsost WHERE lsost.ddate BETWEEN @ddateBegin AND @ddateEnd
и собственно уже на клиенте можно проверить reccount() и использовать для работы
...
Рейтинг: 0 / 0
Хранимая процедура SQL 2005 возвратить параметр ?
    #33910661
Упс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто процедурка на сервере используется,
и долго работать ей не желательно, потомучто не знаю точно где еще она может использоваться, да и имхо она оптимально написана.
подумаю может еще до чего додумаюсь...
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Хранимая процедура SQL 2005 возвратить параметр ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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