| 
 | 
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Проблема в том, что организуется курсор по таблице, имя которой заранее не известно. Для этого используется декларация курсора из подготавливаемого с помощью prepare запроса. Но также необходимо удалять запись сразу после обработки (для этого курсор декларируется как for update), однако в конструкции языка на удаление обязательно должно присутствоать имя таблицы: delete from tablename where current of cursorname Первое что приходит в голову-удалять также динамически подготовленноым запросом-но не получается, потому что в нем не видно декларированного курсора. Вот псевдокод: declare MYCUR cursor for stmt; ... set tablename='MYTABLE'; ... set :sqlstmt = 'select .. from ' || tablename || 'for update'; set :delstmt= 'delete from '|| tablename || 'where current of MYCUR'; prepare stmt from :sqlstmt; open MYCUR; ... fetch from MYCUR into ...; ... execute immediate :delstmt; получаю ошибку при execute immediate: SQL0504N The cursor "MYCUR" is not defined. SQLSTATE=34000 Удалять из таблицы каждый раз по условию (по ключу) не хочу- это работать будет долго. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.03.2003, 12:25 | 
  
  
  
   | 
||
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Удаляй все обработанные записи одним оператором после обработки всего курсора скопом, а не по одной записи. Все равно вся процедура в одной транзакции. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.03.2003, 13:19 | 
  
  
  
   | 
||
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  В том то и дело, что я не хочу этого делать - это потребует дополнительных затрат ресурсов системы, а производительность очень критична. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.03.2003, 13:39 | 
  
  
  
   | 
||
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Это удалени записей по одной потребует ресурсов ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.03.2003, 18:00 | 
  
  
  
   | 
||
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Давайте, давайте:) Прикольно наблюдать за любителями  динамического SQL!:-))) Сколько раз повторять - нужна производительность - используте EMBEDDED SQL! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.03.2003, 09:09 | 
  
  
  
   | 
||
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  4 gardenman ну вы блин даете. а как ты определил, что за средства используются? по псевдокоду ? :) и почему embedded sql не может быть динамическим? EXEC SQL PREPARE XXX FROM :stmt; EXEC SQL EXECUTE IMMEDIATE :stmt; EXEC SQL DECLARE C1 CURSOR FOR STMT; EXEC SQL FETCH C1 USING DESCRIPTOR :*sqldaPointer; ............................................................. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.03.2003, 10:18 | 
  
  
  
   | 
||
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  )) Прекрасно знаю что и в EMBEDDED можно динамически подготовить и выполнить практически любое SQL выражение. Вот только - смысл? Простые вещи нужно делать просто, а не усложнять себе жизнь. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.03.2003, 14:41 | 
  
  
  
   | 
||
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  так то же простые вещи. они же вопросов не вызывают :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 13.03.2003, 19:31 | 
  
  
  
   | 
||
| 
 
Как удалять в курсоре for update если курсор подготовлен динамически? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  SQLGetCursorName Function (CLI) - Get Cursor Name  Это из С или я не про то ? SQLGetCursorName() returns the cursor name associated with the input statement handle. If a cursor name was explicitly set by calling SQLSetCursorName(), this name will be returned; otherwise, an implicitly generated name will be returned. И далее - An application can update a keyset-driven cursor in two ways: * Issue an UPDATE WHERE CURRENT OF <cursor name> or DELETE WHERE CURRENT OF <cursor name> using SQLPrepare() with SQLExecute() or SQLExecDirect() * Use SQLSetPos() or SQLBulkOperations() to update, delete, or add a row to the result set. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.03.2003, 13:40 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?desktop=1&fid=43&tid=1606633]:  | 
    0ms | 
get settings:  | 
    11ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    37ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    42ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 14ms | 
| total: | 135ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.