|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Народ, есть ХП на сервере: CREATE PROCEDURE dbo.neworders @@newNrOrders numeric(10)=0 OUTPUT with recompile AS DECLARE @xNewOrder Numeric(10) select @xnewOrder = nr_orders + 1 FROM NewOrder update newOrder SET nr_orders = @xnewOrder select @@newNrOrders = @xnewOrder RETURN @@newNrOrders GO Пытаюсь заполучить значенеие @@newNrOrders в VFP при помощи SQLEXEC: = SQLEXEC(gnConnHandle, Exec_String) где Exec_String = [EXEC NewOrders @retVal] Но не отрабатывается корректно возврат значения из ХП в переменную retVal. Подскажите как правильно, спс заранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 17:02 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
http://sql.ru/forum/actualthread.aspx?tid=756611&hl=create+procedure+dbo+test + там ссылка на обсуждение на др.форум ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 17:07 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
+ вопрос. это реализация какого-то нумератора с наращением - не лисапед? точно через ХП нужно реализвать или рассматривались другие способы реализации? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 17:11 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
прошелмимо, есть другие варианты как заполучить уникальный номер док. в MS SQL, когда одновременно в работают до 50 человек? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 17:24 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Valeriiесть другие варианты как заполучить уникальный номер док. в MS SQL, когда одновременно в работают до 50 человек? Изначально новый документ может быть без номера, а при сохранении (добавлении в базу) номер присваивается в триггере. В твоем способе дырок в нумерации никак не избежать, нажмут случайно добавить и все, номер задействовался. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 17:33 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Valeriiесть другие варианты как заполучить уникальный номер док. в MS SQL, когда одновременно в работают до 50 человек?И не один. В твоем варианте аж три оператора, между которыми могут влезть другие коннекты и ты получишь задвоения. Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 17:41 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Valeriiпрошелмимо, есть другие варианты как заполучить уникальный номер док. в MS SQL, когда одновременно в работают до 50 человек? я не готов ответить однозначно, все зависит от целей и т.д. в моей практике была реализация сложных нумераторов аля "Валя10июн2010_руб_1045" (с аналитикой в номере). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 17:42 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
проходящий., Что предлагаешь в таком случае? Блокировать эту запись? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 17:43 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Valeriiпроходящий., Что предлагаешь в таком случае? Блокировать эту запись?И как собрался рулить блокировками на сервере? Это ведь не фокс. Сходи на соседний форум по серверу и почитай. Тема изобретения лисапеда с генерацией ключей видимо вечная. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 18:01 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
проходящий., почему нет? на мгновенье, тут делов для сервака пару тактов проца.. потом после вполнения процедуры высвободить... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 18:08 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Если это SQLServer, @@Identity или SCOPE_IDENTITY( ) сразу после Insert дает последнее значение индекса. Все можно сделать в одной процедуре. Зачем гонять данные туда-сюда? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 18:19 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Ffffffffffffffff, проблема в том что нужно вставить документ в котором могут быть от 1 до нескольких десятков записей. и этому доку нужен уникальный номер. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 18:23 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
> Автор: Valerii > проблема в том что нужно вставить документ в котором могут быть от 1 до нескольких десятков записей. и этому доку > нужен уникальный номер. А если уникальный номер генерировать средствами самого сервера, как уже предлагали, а бездырочную нумерацию организовать отдельным, независимым полем? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 18:29 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Прислушайтесь к данным советам. То, что вы написали, не проблема, а совершенно стандартная ситуация. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 18:29 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
ValeriiПытаюсь заполучить значенеие @@newNrOrders в VFP при помощи SQLEXEC: = SQLEXEC(gnConnHandle, Exec_String) где Exec_String = [EXEC NewOrders @retVal] Но не отрабатывается корректно возврат значения из ХП в переменную retVal. Подскажите как правильно, спс заранее. Как получить значение выходного параметра процедуры сервера По поводу кода процедуры Вам правильно посоветовали сделать поиск в форуме по MS SQL по ключевому слову "Счетчик". Там и примеры приводили и объясняли про проблемы. Но вообще-то, можно просто сделать поле номера со свойством Identity. Как с ним работать описано здесь Как прочитать значение поля со свойством IDENTITY ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 19:13 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Игорь Горбонос, Так об этом же и речь. Есть Отдельная! таблица на сервере, с одной записью, в ней один столбец, который инкрементируется и с которого потом тут же считывается новое значение для сохраняемого документа. Просто нужно добиться 100% УНИКАЛЬНОСТИ при одновременной работе более 100 клиентов. Мысль в следующем, можно это поле сделать Identity, у каждый раз удалять запись после вставки и считывания, при этом значение Indentity не обнуляется. Но как-то это не красиво. Красивее на мой взгляд это временная блокировка записи/поля на момент записи чтения. Разве это не самый правильный и оптимальный вариант для любого более менее шустрого сервера? Что скажете? Я долго мучаюсь с этим вопросом, те коменты - просто общие фразы, а вот конкретный пример фокса как это корректноорганизовать - никто не предложил. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 19:14 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
ValeriiКрасивее на мой взгляд это временная блокировка записи/поля на момент записи чтения. Разве это не самый правильный и оптимальный вариант для любого более менее шустрого сервера? Проблема в том, что за блокировками надо следить. Иначе можете получить deadLock (мертвые блокировки). В общем случае, это очень не тривиальная задача. Поэтому, чем меньше блокировок, тем лучше. Как мне кажется, если не стоит вопрос отслеживания факта существования записи, то проще делать так Код: plaintext
Собственно, в разном виде Вам это вариант уже предложили на форуме по MS SQL. Недостатком данного способа является тот факт, что если записи с таким иеднтификатором не существует, то у Вас проблемы. Какие проблемы? Ну, почитайте, например, вот это обсуждение Покритикуйте счетчик.... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 19:27 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
ValeriiИгорь Горбонос, Так об этом же и речь. Есть Отдельная! таблица на сервере, с одной записью, в ней один столбец, который инкрементируется и с которого потом тут же считывается новое значение для сохраняемого документа. Просто нужно добиться 100% УНИКАЛЬНОСТИ при одновременной работе более 100 клиентов. Мысль в следующем, можно это поле сделать Identity, у каждый раз удалять запись после вставки и считывания, при этом значение Indentity не обнуляется.А теперь объясните каким образом уникальность у Вас так сильно завязана на бездырочность? Зачем надо что-то удалять? Но как-то это не красиво.Угу. Ибо бессмысленно. Не надо придумывать самому себе проблемы. Красивее на мой взгляд это временная блокировка записи/поля на момент записи чтения.Батенька, sql сервер - многопользовательская система. Со своей системой управления блокировками. Настроенная людьми много лет занимающимися именно этой проблемой. Потому Ваше предложение выглядит как предложение самостоятельно делать себе все даже при наличии более качественного готового. Разве это не самый правильный и оптимальный вариант для любого более менее шустрого сервера?Нет. И дело не в шустрости. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 19:53 |
|
получить значение из ХП MS SQL
|
|||
---|---|---|---|
#18+
Valeriiпрошелмимо, есть другие варианты как заполучить уникальный номер док. в MS SQL, когда одновременно в работают до 50 человек? Ипользуй функцию времени или SYS(2015). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2010, 21:28 |
|
|
start [/forum/topic.php?fid=41&fpage=94&tid=1585157]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 136ms |
0 / 0 |