|
|
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
Нужно в СКРИПТЕ сделать такой UPDATE: Код: plaintext 1. 2. 3. Т.е. нужно написать что-нибудь такое: Код: plaintext 1. 2. Обращаю Ваше внимание, что поле kakojto_number - NUMBER! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 12:59 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
создать табличку типа Код: plaintext value_invalue_out101112132025 Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 13:19 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
oнo ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 13:20 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
RiskaНужно в СКРИПТЕ сделать такой UPDATE: Код: plaintext 1. 2. 3. Т.е. нужно написать что-нибудь такое: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 13:25 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
RiskaНужно в СКРИПТЕ сделать такой UPDATE:Плохая практика... RiskaТ.е. нужно написать что-нибудь такое: Код: plaintext 1. 2. А в таком работает? Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 13:57 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
Да сам вопрос отвечает на себя... Марк прав... Если нужно динамическое изменение запроса, значит и нужно использовать динамический SQL. Чего там еще думать то?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:04 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
ono?oнo ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Онo! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:08 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
RiskaОнo! ну вот видите, как все просто. и никакого динамического SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:11 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
Riska ono?oнo ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Онo! А если нужно через переменную передать (1, 2, 3..) то какого типа переменную создать? string не покатит т.к. - будет не соотв. типов.. а int[] тож ругаеться... Нужно например как в ДВ тип - number array. что предложите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:15 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
PL99А в таком работает? Код: plaintext 1. 2. 3. 4. 5. Не работает Код: plaintext 1. 2. За что ему/ей отдельное спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:23 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
SashukА если нужно через переменную передать (1, 2, 3..) то какого типа переменную создать? string не покатит т.к. - будет не соотв. типов.. а int[] тож ругаеться... Нужно например как в ДВ тип - number array. что предложите? http://www.sql.ru/forum/actualpost.aspx?bid=39&tid=564528&mid=5764706&p=1&act=quot#5764228 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:23 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
Sashuk А если нужно через переменную передать (1, 2, 3..) ... Тогда можно и через EXECUTE IMMEDIATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:27 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
Riska Sashuk А если нужно через переменную передать (1, 2, 3..) ... Тогда можно и через EXECUTE IMMEDIATE а не будет ошибки при преведении типов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:31 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
Sashuk Riska Sashuk А если нужно через переменную передать (1, 2, 3..) ... Тогда можно и через EXECUTE IMMEDIATE а не будет ошибки при преведении типов? Какое приведение типов? EXECUTE IMMEDIATE выполняет переданную текстовую строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:33 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
Локшин МаркКакое приведение типов? EXECUTE IMMEDIATE выполняет переданную текстовую строку. сорри... провтыкал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:35 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
решение от: 1. с новым годом - не вегда есть возможность менять структуру БД 2. Локшин Марк - чаще запросы хранятся в БД для последующего их изменения без перекомпиляции программы ... ЗЫ: все зависит от поставленной задачи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 09:05 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
ono?решение от: 2. Локшин Марк - чаще запросы хранятся в БД для последующего их изменения без перекомпиляции программы ... Если что-то пишут в СКРИПТЕ (как сказано в исходном письме!), то оно никак не может храниться в БД и исправляться без перекомпиляции программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 10:26 |
|
||
|
Динамическое изменение IN в скрипте
|
|||
|---|---|---|---|
|
#18+
RiskaНужно в СКРИПТЕ сделать такой UPDATE: Риска, а за чем вообше так делать? В смысле писать update в скрипте. Напиши процедуру и пусть твой update просходит в базе данных string s_name, s_number long l_id s_name = 'Вася' s_number = '1,2,3,9,19' l_id = 0 DECLARE sp_test PROCEDURE FOR sp_test @id = :l_id, @name = :s_name, @kakojto_number = :s_number; SetPointer(HourGlass!) EXECUTE sp_test; SetPointer(Arrow!) IF sqlca.SQLCode = -1 THEN MessageBox("SQL Error", sqlca.SQLErrText) ELSE FETCH sp_test INTO :l_return; IF sqlca.SQLCode = -1 THEN MessageBox("SQL Error", sqlca.SQLErrText) END IF END IF CLOSE sp_test; ну и в процедуре: create procedure sp_test @id int, @name varchar(30), @kakojto_number varchar(7900) as set nocount on DECLARE @separator_position int, @array_value varchar(1000), @sql_string varchar(4000) set @separator_position = ',' CREATE TABLE #tmp (array_value Int) SELECT @kakojto_number = @kakojto_number + @separator WHILE Patindex('%' + @separator + '%' , @kakojto_number ) <> 0 BEGIN SELECT @sql_string = '', @separator_position = Patindex('%' + @separator + '%' , @kakojto_number ), @array_value = Left@kakojto_number , @separator_position - 1) INSERT INTO #tmp VALUES (convert(int, @array_value)) SELECT @kakojto_number = Stuff(@kakojto_number , 1, @separator_position, '') END //ну и потом .. begin transaction UPDATE table1 SET id = @id WHERE name = @name AND kakojto_number in (select array_value from #tmp ) if @@error <> 0 rollback transaction select @@error return end else commit transaction select 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 19:23 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=35356785&tid=1336650]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 417ms |

| 0 / 0 |

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