Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
07.03.2002, 14:31
|
|||
|---|---|---|---|
|
|||
extended stored procedure |
|||
|
#18+
А не подскажут ли всезнающие, что это за ерунда. Вызываю в user-defined function extended procedure следующим образом: CREATE FUNCTION [dbo].[fn_NextValue] (@Name nvarchar(30)) RETURNS int AS BEGIN Declare @result int exec master..xp_nextval @Name, @result output return (@result) END на выходе NULL. если вызываю этот код непосредственно или делаю аналогичную sp_ , то все нормально. где собака порылась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.03.2002, 15:10
|
|||
|---|---|---|---|
|
|||
extended stored procedure |
|||
|
#18+
Возможно, в вашей extended sp неправильно описан выходной параметр. Если использовать стандартные xp, то все работает замечательно. Аналогичный пример со стандартной процедуркой: create function fn_GetNetName() returns sysname as begin declare @res sysname exec master..xp_getnetname @res out return @res end go select dbo.fn_GetNetName() Может, покажете кусок кода в процедуре, который формирует выходной параметр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.03.2002, 15:19
|
|||
|---|---|---|---|
|
|||
extended stored procedure |
|||
|
#18+
вот (исползуется SQL-DMO): //формируется запрос char szResult[1024]="Select Value from master..syssequences where Name='"; strncat((char *)szResult,(char *)pbData,cbActualLen); strcat((char *)szResult,"'"); //Выполняется QueryResultsPtr pResult=spSQLServer->ExecuteWithResults(szResult); //получаем результат - проверял, нормально все int lResult=pResult->GetColumnLong(1,1); spSQLServer->DisConnect(); spSQLServer.Release(); //возвращается значение типа int (long тоже пробовал) srv_paramsetoutput(srvproc,2,(BYTE *)&lResult,sizeof(lResult),FALSE); вот. когда делал xp_ с одним вх/вых параметром типа varchar все было нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.03.2002, 16:05
|
|||
|---|---|---|---|
|
|||
extended stored procedure |
|||
|
#18+
На всякий случай проверь выходное значение srv_paramsetoutput. Вдруг FAIL. А так описание выглядит вполне правдоподобно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.03.2002, 16:15
|
|||
|---|---|---|---|
|
|||
extended stored procedure |
|||
|
#18+
А попробуй еще сделать set nocount on перед вызовом ExecuteWithResults. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.03.2002, 11:01
|
|||
|---|---|---|---|
|
|||
extended stored procedure |
|||
|
#18+
Мда, жаль. Ну ладно, кинь тогда структуру таблицы syssequences (по названию смахивает на системную, но у меня такой в мастере нет) и данные для нее, а то у меня тестовый пример нормально работает. А если вместо lResult=pResult->GetColumnLong(1,1) присваивать просто константу, то тоже работает неправильно? Хочется сузить область поисков - связана ошибка именно с описанием или присвоением параметров или же копать надо в сторону получения данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.03.2002, 13:58
|
|||
|---|---|---|---|
|
|||
extended stored procedure |
|||
|
#18+
syssequences - это чтоб ввести в заблуждение - обычная таблица: CREATE TABLE [dbo].[syssequences] ( Name nvarchar (30) Constraint PK_syssequences Primary key NOT NULL , Start int NOT NULL , Seed int NOT NULL , Finish int NULL, Value int NULL ) ON [PRIMARY] я повторюсь. проблема не в том, что xp_ не возвращает значение, а в том, что не возвращает значение UDF, использующая данную xp_: declare @res int exec xp_newval 'Test',@res output select @res - работает нормально, выдает значения а если сделать ф-цию (fn_newval), всатвить в нее этот код, кроме последнего select'а, и выдать return (@ret) то select fn_newval(....) выдает NULL. А не может это быть из-за того, что в xp_ делается update таблицы? Было бы как минимум странно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.03.2002, 14:31
|
|||
|---|---|---|---|
|
|||
extended stored procedure |
|||
|
#18+
Насчет udf и xp_ помню. У меня как раз такая связка в тестовом примере работала нормально. Ага, там еще и update'ы происходят. И небось еще много чего интересного Сразу хочется узнать кучу деталей. Кинь мне, плз, на мыло все скрипты для базы и компилирующийся код xp целиком, чтобы воспроизвести эту ситуацию - GreenSunrise@mail.ru А то надоело с тестами возиться - в них все нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1823610]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
131ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 429ms |

| 0 / 0 |
