

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Gestisci blocchi anonimi nelle istruzioni SQL dinamiche in Aurora PostgreSQL
<a name="handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql"></a>

*Nome utente, Amazon Web Services*

## Riepilogo
<a name="handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql-summary"></a>

Nota: Amazon Cloud Directory non è più aperta a nuovi clienti. [Per alternative a Cloud Directory, esplora [Amazon DynamoDB e Amazon](https://aws.amazon.com/dynamodb/) Neptune.](https://aws.amazon.com/neptune/) Se hai bisogno di aiuto per scegliere l'alternativa giusta per il tuo caso d'uso o per qualsiasi altra domanda, contatta. [Supporto AWS](https://aws.amazon.com/support/)

Questo modello mostra come evitare l'errore che si verifica quando si gestiscono blocchi anonimi nelle istruzioni SQL dinamiche. Ricevi un messaggio di errore quando utilizzi AWS Schema Conversion Tool per convertire un database Oracle in un database Edition compatibile con Aurora PostgreSQL. Per evitare l'errore, devi conoscere il valore di una variabile `OUT` bind, ma puoi conoscere il valore di una variabile `OUT` bind solo dopo aver eseguito l'istruzione SQL. L'errore deriva dal fatto che AWS Schema Conversion Tool (AWS SCT) non comprende la logica all'interno dell'istruzione Dynamic SQL. AWS SCT non è in grado di convertire l'istruzione SQL dinamica in PL/SQL codice (ovvero funzioni, procedure e pacchetti).

## Prerequisiti e limitazioni
<a name="handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql-prereqs"></a>

**Prerequisiti**
+ Account AWS attivo
+ [Istanza del database PostgreSQL (DB) Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)
+ [Amazon Relational Database Service (Amazon RDS) per istanze database Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)
+ [Terminale interattivo PostgreSQL (psql)](https://www.postgresql.org/docs/current/app-psql.html)
+ [SQL \$1Plus](https://docs.oracle.com/cd/B14117_01/server.101/b12170/qstart.htm)
+ `AWS_ORACLE_EXT`schema (parte del [pacchetto di estensione AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html)) nel database di destinazione
+ Versione più recente di [AWS Schema Conversion Tool (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/) e dei relativi driver richiesti

## Architecture
<a name="handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql-architecture"></a>

**Stack tecnologico di origine**
+ Oracle Database 10g locale e versione successiva

**Stack tecnologico Target**
+ Amazon Aurora PostgreSQL
+ Amazon RDS per PostgreSQL
+ Strumento di conversione dello schema AWS (AWS SCT)

**Architettura di migrazione**

Il diagramma seguente mostra come utilizzare le variabili di `OUT` associazione AWS SCT e Oracle per scansionare il codice dell'applicazione alla ricerca di istruzioni SQL incorporate e convertire il codice in un formato compatibile utilizzabile da un database Aurora.

![\[Diagramma di architettura per l'utilizzo delle variabili di associazione AWS SCT e Oracle OUT\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/ada89410-b866-4d39-af9c-021be6cc6ae5/images/7c004981-2ed0-4b67-989f-54d8691712ca.png)


Il diagramma mostra il flusso di lavoro seguente:

1. Genera un report AWS SCT per il database di origine utilizzando Aurora PostgreSQL come database di destinazione.

1. Identifica il blocco anonimo nel blocco di codice SQL dinamico (per il quale AWS SCT ha generato l'errore).

1. Converti il blocco di codice manualmente e distribuisci il codice su un database di destinazione.

## Tools (Strumenti)
<a name="handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql-tools"></a>

**Servizi AWS**
+ [Amazon Aurora PostgreSQL Compatible Edition è un motore](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) di database relazionale completamente gestito e conforme ad ACID che ti aiuta a configurare, gestire e scalare le distribuzioni PostgreSQL.
+ [Amazon Relational Database Service (Amazon RDS) per](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) Oracle ti aiuta a configurare, gestire e scalare un database relazionale Oracle nel cloud AWS.
+ [AWS Schema Conversion Tool (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/) ti aiuta a rendere prevedibili le migrazioni di database eterogenei convertendo automaticamente lo schema del database di origine e la maggior parte degli oggetti di codice del database in un formato compatibile con il database di destinazione.

**Altri strumenti**
+ [pgAdmin](https://www.pgadmin.org/) consente di connettersi e interagire con il server di database.
+ [Oracle SQL Developer](https://www.oracle.com/database/sqldeveloper/) è un ambiente di sviluppo integrato che è possibile utilizzare per sviluppare e gestire database in Oracle Database. È possibile utilizzare [SQL \$1Plus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) o Oracle SQL Developer per questo modello.

## Epiche
<a name="handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql-epics"></a>

### Configura il database di origine Oracle
<a name="configure-the-oracle-source-database"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un'istanza Oracle su Amazon RDS o Amazon EC2. | Per creare un'istanza DB Oracle su Amazon RDS, consulta [Creazione di un'istanza DB Oracle e connessione a un database su un'istanza Oracle DB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Oracle.html) nella documentazione di Amazon RDS.Per creare un'istanza DB Oracle su Amazon Elastic Compute Cloud (Amazon EC2), consulta [Amazon EC2 for Oracle](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/ec2-oracle.html) nella documentazione di AWS Prescriptive Guidance. | DBA | 
| Crea uno schema di database e oggetti per la migrazione. | Puoi usare Amazon Cloud Directory per creare uno schema di database. Per ulteriori informazioni, consulta [Create a Schema](https://docs.aws.amazon.com/clouddirectory/latest/developerguide/getting_started_create_schema.html) nella documentazione di Cloud Directory. | DBA | 
| Configura i gruppi di sicurezza in entrata e in uscita. | Per creare e configurare gruppi di sicurezza, consulta [Controllare l'accesso con i gruppi di sicurezza](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html) nella documentazione di Amazon RDS. | DBA | 
| Conferma che il database sia in esecuzione. | Per verificare lo stato del database, consulta [Visualizzazione degli eventi di Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ListEvents.html) nella documentazione di Amazon RDS. | DBA | 

### Configurare il database Aurora PostgreSQL di destinazione
<a name="configure-the-target-aurora-postgresql-database"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un'istanza Aurora PostgreSQL in Amazon RDS. | Per creare un'istanza Aurora PostgreSQL, consulta [Creazione di un cluster DB e connessione a un database su un cluster Aurora PostgreSQL DB](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.html) nella documentazione di Amazon RDS. | DBA | 
| Configura un gruppo di sicurezza in entrata e in uscita. | Per creare e configurare gruppi di sicurezza, consulta [Fornire l'accesso al cluster DB nel VPC creando un gruppo di sicurezza nella documentazione di](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/CHAP_SettingUp_Aurora.html#CHAP_SettingUp_Aurora.SecurityGroup) Aurora. | DBA | 
| Verificare che il database Aurora PostgreSQL sia in esecuzione. | Per verificare lo stato del database, consulta [Visualizzazione degli eventi di Amazon RDS](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/USER_ListEvents.html) nella documentazione di Aurora. | DBA | 

### Configurazione di AWS SCT
<a name="set-up-aws-sct"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Connect AWS SCT al database di origine. | Per connettere AWS SCT al tuo database di origine, consulta [Connessione a PostgreSQL come sorgente](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.Connecting) nella documentazione di AWS SCT. | DBA | 
| Connect AWS SCT al database di destinazione. | Per connettere AWS SCT al tuo database di destinazione, consulta [What is the AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)? nella Guida per l'utente di AWS Schema Conversion Tool. | DBA | 
| Converti lo schema del database in AWS SCT e salva il codice convertito automaticamente come file SQL. | Per salvare i file convertiti da AWS SCT, consulta [Salvare e applicare lo schema convertito in AWS SCT nella](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html#CHAP_Converting.SaveAndApply) Guida per l'utente di AWS Schema Conversion Tool. | DBA | 

### Migrare il codice
<a name="migrate-the-code"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Scarica il file SQL per la conversione manuale. | Nel file convertito da AWS SCT, estrai il file SQL che richiede la conversione manuale. | DBA | 
| Aggiorna lo script. | Aggiorna manualmente il file SQL. | DBA | 

## Risorse correlate
<a name="handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql-resources"></a>
+ [Amazon RDS](https://aws.amazon.com/rds/)
+ [Caratteristiche di Amazon Aurora](https://aws.amazon.com/rds/aurora/postgresql-features/)

## Informazioni aggiuntive
<a name="handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql-additional"></a>

Il codice di esempio seguente mostra come configurare il database di origine Oracle:

```
CREATE or replace PROCEDURE calc_stats_new1 (
  a NUMBER,
  b NUMBER,
  result out NUMBER)
IS
BEGIN
result:=a+b;
END;
/
```

```
set serveroutput on ;
 
DECLARE
  a NUMBER := 4;
  b NUMBER := 7;
  plsql_block VARCHAR2(100);
  output number;
BEGIN
  plsql_block := 'BEGIN calc_stats_new1(:a, :b,:output); END;';
  EXECUTE IMMEDIATE plsql_block USING a, b,out output;  
  DBMS_OUTPUT.PUT_LINE('output:'||output);
 
END;
```

Il codice di esempio seguente mostra come configurare il database di destinazione Aurora PostgreSQL:

```
 w integer,
 x integer)
RETURNS integer
AS
$BODY$
DECLARE
begin
return w + x ;
end;
$BODY$
LANGUAGE  plpgsql;
 
 
CREATE OR REPLACE FUNCTION test_pg.init()
RETURNS void
AS
$BODY$
BEGIN
if aws_oracle_ext.is_package_initialized
      ('test_pg' ) then
      return;
    end if;
    perform aws_oracle_ext.set_package_initialized
      ('test_pg' );
 
PERFORM aws_oracle_ext.set_package_variable('test_pg', 'v_output', NULL::INTEGER);
PERFORM aws_oracle_ext.set_package_variable('test_pg', 'v_status', NULL::text);
END;
$BODY$
LANGUAGE  plpgsql;
 

DO $$ 
declare
v_sql text;
v_output_loc int; 
a integer :=1;
b integer :=2;
BEGIN 
perform  test_pg.init();
--raise notice 'v_sql %',v_sql;
execute 'do $a$ declare v_output_l int; begin select * from test_pg.calc_stats_new1('||a||','||b||') into v_output_l;
PERFORM aws_oracle_ext.set_package_variable(''test_pg'', ''v_output'', v_output_l) ; end; $a$'  ; 
v_output_loc := aws_oracle_ext.get_package_variable('test_pg', 'v_output');
raise notice 'v_output_loc %',v_output_loc; 
END ; 
$$
```