У нас есть номер счета, хранящийся в поле Clob таблицы ... мы назовем его tbl_accountdetail. Мне нужно отозвать все записи из tbl_accountdetail, если номера счетов указаны в результатах другого запроса ... мы назовем это sourcequery.
Я могу сделать это индивидуально для каждого номера счета с помощью:
Select * from Tbl_accountdetail where REGEXP_INSTR(CLOB,'accountnumber')>0
Естественно, моей первой мыслью было создание курсора и просмотр каждого номера счета изsourcequery.
Declare @accountnumber varchar(30)
Declare Err_Cursor Cursor for
Select accountnumber from ErrorTable;
Open Err_Cursor;
Fetch next from Err_Cursor into @accountnumber;
While @@Fetch_status = 0
Begin
Select * from Tbl_accountdetail where REGEXP_INSTR(CLOB,@accountnumber)>0
Fetch next from Err_Cursor into @accountnumber
End;
Close Err_Cursor;
Deallocate Err_Cursor;
Чем больше я читаю, тем больше меня смущает лучший / самый эффективный способ получения желаемых результатов.
Ссылки на курсоры, кажется, требуют, чтобы они были включены в хранимую процедуру и, исходя из простоты, вы не думаете, что это нужно добавить в sp. Все ссылки на макросы кажутся макросами, которые нужно обновить / вставить и т. Д. который мне не нужен. Все, что мне нужно сделать, это вернуть строки из Tbl_accountdetail, которые имеют номер счета где-то в clob.
Я новичок в Teradata и Clobs. Может ли кто-нибудь помочь мне с лучшим способом поиска сгустка? И сделать это для списка значений?
Любая помощь / предложения с благодарностью.