Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В чем разница между вызовом ХП с помощью {CALL ..} и EXECUTE? / 6 сообщений из 6, страница 1 из 1
21.01.2002, 07:51
    #32021066
toypaul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между вызовом ХП с помощью {CALL ..} и EXECUTE?
Что лучше использовать при работе с SQL Server через ODBC?
Можно ли обрабатывать выходные параметры используя EXECUTE?
У кого есть пример использования любого из этих методов дайте, плиз, ссылку или скиньте пример на мыло 1csql@udmnet.ru

Заранее, спасибо!
...
Рейтинг: 0 / 0
21.01.2002, 07:54
    #32021068
toypaul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между вызовом ХП с помощью {CALL ..} и EXECUTE?
И еще в дополнение. Можно ли динамически определить тип параметра для связывания с помощью SQLBindParameter? Дело в том, что нужно написать приложение, которое должно выполнять любые ХП, соответственно на момент выполнения типы параметров не известны.
...
Рейтинг: 0 / 0
21.01.2002, 13:21
    #32021107
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между вызовом ХП с помощью {CALL ..} и EXECUTE?
...
Рейтинг: 0 / 0
21.01.2002, 15:38
    #32021132
toypaul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между вызовом ХП с помощью {CALL ..} и EXECUTE?
Прежде чем задать вопрос я вдоль и поперек излазил МСДН. У меня конкретные вопросы, на которые хотелось бы получить конкретные ответы.

Почему задаю такие вопросы:

1. Синтаксис CALL отличается от синтаксиса EXECUTE (хоть и не на много но все же), то есть теоретически вариант с CALL не охватывает всех возможностей.
2. Если использовать EXECUTE, то похоже (по-крайней мере мне так показалось при прочтении МСДН) не получится использовать выходные (OUTPUT) параметры и значение результата выполнения ХП.
3. Похоже (опять же после прочтения МСДН), определить тип выходных параметров (вообще-то и входных нужно тоже) не получится. Посмотреть хотя бы на то как реализован вызов ХП через АДО - тип указывается вручную. Здесь мне бы хотелось узнать можно ли после SQLPrepare, узнать типы параметров, чтобы правильно использовать SQLBindParameter.

По пп. 1 и 2 хотелось бы выбрать лучший. Если бы в п.2 можно было "привязывать" (и получать значения) выходные параметры с помощью SQLBindParameter, то это был бы лучший вариант. Иначе придется использовать п. 1

Если кто плотно занимался выполнением ХП через ODBC, помогите советом.

Или хотя бы посоветуйте форум (можно английский), посвященный программированию для SQL Server.

Александр, все равно спасибо за ответ!
...
Рейтинг: 0 / 0
25.01.2002, 17:01
    #32021543
toypaul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между вызовом ХП с помощью {CALL ..} и EXECUTE?
Кому интересно - решение найдено.
1. Лучше использовать конструкцию CALL , так как используя EXECUTE нельзя получить доступ к выходным параметрам
2. Получить тип параметров во время выполнения можно. Вот выдержка из MSDN:

The only situation in which the application cannot easily determine the parameter metadata is when the user enters a parameterized statement. In this case, the application calls SQLPrepare to prepare the statement, SQLNumParams to determine the number of parameters, and SQLDescribeParam to describe each parameter. However, as was noted earlier, most data sources do not provide a way for the driver to discover parameter metadata, so SQLDescribeParam is not widely supported.

Смысл (кому аглицкий не понятен) в том, что значала запрос нужно "приготовить", потом нам "скажут" количество параметров, а потом можно пользуя функцю SQLDescribeParam получить все данные о параметре. В конце замечено, что не все драйверы это поддерживают, но MS SQL поддерживает (мне это и было нужно)

Удачи всем!
I love MSDN!!!
...
Рейтинг: 0 / 0
26.01.2002, 12:06
    #32021549
toypaul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между вызовом ХП с помощью {CALL ..} и EXECUTE?
В дополнение. Более удобный способ определения параметров ХП использование функции SQLProcedureColumns. При ее использовании нужно учитывать следующую таблицу:

SQLProcedureColumns parameter name | sp_sproc_columns parameter name
CatalogName | procedure_qualifier
SchemaName | procedure_owner
ProcName | procedure_name
ColumnName | column_name

то есть для SQL Server она работает через ХП sp_sproc_columns
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В чем разница между вызовом ХП с помощью {CALL ..} и EXECUTE? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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