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

На сервере БД есть хранимая процедура foxtest() мне нужно вызвать ее из фокса. Мне это получилось сделать следующим не очень красивым способом:
Код: plaintext
1.
2.
3.
4.
5.
6.
OPEN DATABASE data1 
	CREATE SQL VIEW foxtest_view;
	CONNECTION Connect1;
	AS SELECT foxtest()
	DROP VIEW foxtest_view;
CLOSE DATABASES

Можно ли обойтись без создания вьюшки foxtest_view или это обязательно?

Спасибо.
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру на сервере не создавая вьюшки?
    #33503980
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно использовать SQLCONNECT()/SQLSTRINGCONNECT() и SQLEXEC()
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру на сервере не создавая вьюшки?
    #33504010
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
65.
ConnectString = ;
	"driver={SQL Server};" ;
	+ "server=MyServer;" ;
	+ "uid=MyUserName;" ;
	+ "pwd=MyPassword;"

SQLSETPROP( 0 , "DispLogin",  3 ) && Не будем отображать диалог подключения

hConn = SQLSTRINGCONNECT(ConnectString, .T.)
IF hConn <  0 
	DIMENSION aErrors( 1 )
	nNumErrors = AERROR(aErrors)
	ErrorString = "Не могу соединиться"
	FOR i =  1  TO nNumErrors
		ErrorString = ErrorString + CHR( 13 ) ;
			+ STR(NVL(aErrors[i, 1 ],  0 )) + ": " ;
			+ STR(NVL(aErrors[i, 5 ],  0 )) + " - " ;
			+ aErrors[i, 2 ]
	ENDFOR
	MESSAGEBOX(ErrorString)
	RETURN
ENDIF

WAIT WINDOW "Соединились!" TIMEOUT  1 

MyParam = "My String Value"

SQLString = "exec MyProc(?MyParam)"

IF ExecString(SQLString) >  0 
	WAIT WINDOW "ОК" TIMEOUT  1 
ELSE
	DIMENSION aErrors( 1 )
	nNumErrors = AERROR(aErrors)
	ErrorString = "Не получается исполнить ХП"
	FOR i =  1  TO nNumErrors
		ErrorString = ErrorString + CHR( 13 ) ;
			+ STR(NVL(aErrors[i, 1 ],  0 )) + ": " ;
			+ STR(NVL(aErrors[i, 5 ],  0 )) + " - " ;
			+ aErrors[i, 2 ]
	ENDFOR
	MESSAGEBOX(ErrorString)
ENDIF

TRY
	SQLDISCONNECT(hConn)
CATCH
ENDTRY

RETURN

*-----------------------------------------

FUNCTION ExecString
LPARAMETERS SQLString, CursorName
PRIVATE res, e
IF TYPE("CursorName") = "C"
	res = SQLEXEC(hConn, SQLString, CursorName)
ELSE
	res = SQLEXEC(hConn, SQLString)
ENDIF
IF res !=  1 
	MESSAGEBOX(MESSAGE(),  16 )
ENDIF
RETURN res
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру на сервере не создавая вьюшки?
    #33504044
DDT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого, круто! Спасибо. Пробую разобраться.

А если рассмотреть вариант с вьюшкой, то как можно получить из него возвращенное значение?
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру на сервере не создавая вьюшки?
    #33504065
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDTОго, круто! Спасибо. Пробую разобраться.

А если рассмотреть вариант с вьюшкой, то как можно получить из него возвращенное значение?
При работе с сервером баз данных из VFP есть два принципиально разных способа - Remote Views (удаленные представления) и сквозной запрос (pass-through). Обычно (но не обязательно) разработчик клиента на VFP использует какой-то один способ. Подробнее об этом можно почитать в HELP по VFP или тут: http://www.caws.atnet.ru/vfox/sql.html
С уважением, Алексей.
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру на сервере не создавая вьюшки?
    #33504075
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDTА если рассмотреть вариант с вьюшкой, то как можно получить из него возвращенное значение?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE SQL VIEW foxtest_view;
	CONNECTION Connect1;
	AS SELECT foxtest() myfield
use foxtest_view in  0 
go top in foxtest_view
myvalue = foxtest_view.myfield
use in foxtest_view
drop view foxtest_view
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру на сервере не создавая вьюшки?
    #33504111
DDT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо --Eugene-- и Aleksey-K за советы. Буду читать и пробовать.
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру на сервере не создавая вьюшки?
    #33504122
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KПодробнее об этом можно почитать в HELP по VFP или тут: http://www.caws.atnet.ru/vfox/sql.html :

SQLEXEC()
Функция возвращает 0 - если команды выполнилась без ошибки, или код ошибки - если она имела место быть.
Это не так:

SQLEXEC( ) returns the number of result sets if there is more than one. SQLEXEC( ) returns 0 if it is still executing and returns 1 when it has finished executing. SQLEXEC( ) returns –1 if a connection level error occurs.
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру на сервере не создавая вьюшки?
    #33504127
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой, покорнейше прошу прощения...

надо было мне внимательнее читать
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вызвать хранимую процедуру на сервере не создавая вьюшки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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