Перемещение хранимой процедуры с оракула на сервер SQL - PullRequest
0 голосов
/ 27 февраля 2019
PROCEDURE populate_boj_deposit_tab(asatdate IN VARCHAR2, in_sol   IN VARCHAR2)   AS 
test_cnt      BINARY_INTEGER; 
startdate     DATE; 
codefound     BINARY_INTEGER := 0; 
counter       BINARY_INTEGER := 0; 
ex_indx       BINARY_INTEGER := 1;  
excludeAcct   BINARY_INTEGER := 1; 
arr_indx      BINARY_INTEGER := 1; 
deposit_table_obj                      deposit_record_table;
category_table_obj    category_record_table;
exclusion_table_obj   exclusion_record_table := exclusion_record_table();
report_array reports := reports();

INSERT /*+ APPEND */ INTO boj_deposit_portfolio
    SELECT 
      customer_id,
      SUM(GENERALFUNCTIONS.FN_ConvertAmountAsOfDate(asAtDate, currency,'JMD',sanctioned_ato,'REV')) AS sanctioned_ato
    FROM 
      boj_raw_accounts_data
    GROUP BY customer_id;

    COMMIT;

    --Find and populate exclusion table
    EXECUTE IMMEDIATE 'TRUNCATE TABLE boj_deposits_exclusion';                    
    --Get loans accounts for each report that does not match    
    SELECT 
    transaction_balance, acid, borrower_category_code, sector_code, sub_sector_code, 
    rep_date, customer_id, cust_code
    BULK COLLECT INTO
    deposit_table_obj
    FROM bojdeposit_tab;

Как я могу преобразовать этот код в SQL SERVER Я новичок в использовании Oracle без изменения функциональности запроса?Я в порядке с типами данных и другими общими вещами, главное беспокойство - массовая вставка и объекты таблицы, например, category_table_obj category_record_table;

1 Ответ

0 голосов
/ 27 февраля 2019

Почти каждую строку необходимо изменить:

There is no type ** BINARY_INTEGER  in SQL Server.
Assginment in SQL Server is done with an = sign not a := sign.

You can remove the commit - SQL Server starts a transaction with a begin transaction
General_functions in sql server would be interpreted as a schema name not package.
There is no execute immediate statement in SQL Server or bulk collect statement in SQL Server.

Для SQL-сервера есть все эквивалентные операторы, но для этого потребуется много работы (и кто-то, кто знает как SQL Server TSQL, так и OracleOSQL).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...