extracted objects
This commit is contained in:
145
docs/procedures/ROWSORT_TIPI.md
Normal file
145
docs/procedures/ROWSORT_TIPI.md
Normal file
@@ -0,0 +1,145 @@
|
||||
# ROWSORT_TIPI
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
PROCEDURE "ROWSORT_TIPI" (
|
||||
p_direc_cod IN VARCHAR2,
|
||||
o_return OUT CLOB
|
||||
) AS
|
||||
|
||||
v_direc VARCHAR2(4);
|
||||
v_cod_tipo VARCHAR2(10);
|
||||
v_cod_step NUMBER;
|
||||
v_cod_step_new NUMBER;
|
||||
v_return CLOB;
|
||||
BEGIN
|
||||
|
||||
-- Separo i valori in entrata su p_direc_cod 'direc_cod' in un array ( Es: 'desc_AN' => [ 'desc', 'AN' ] )
|
||||
---- Seleziono la direzione (asc o desc)
|
||||
SELECT
|
||||
upper(result)
|
||||
INTO v_direc
|
||||
FROM
|
||||
TABLE ( string_to_table_enum(p_string => p_direc_cod, v_level => 0, p_separator => '_') )
|
||||
WHERE
|
||||
id = 1;
|
||||
|
||||
---- Seleziono l'cod_tipo della riga da spostare
|
||||
|
||||
SELECT
|
||||
upper(result)
|
||||
INTO v_cod_tipo
|
||||
FROM
|
||||
TABLE ( string_to_table_enum(p_string => p_direc_cod, v_level => 0, p_separator => '_') )
|
||||
WHERE
|
||||
id = 2;
|
||||
|
||||
IF v_direc = 'ASC' THEN
|
||||
|
||||
-- Seleziono i numeri di riga
|
||||
SELECT
|
||||
cod_step,
|
||||
cod_step - 1
|
||||
INTO
|
||||
v_cod_step,
|
||||
v_cod_step_new
|
||||
FROM
|
||||
tb_tipi_mat
|
||||
WHERE
|
||||
upper(TRIM(cod_tipo)) = upper(TRIM(v_cod_tipo));
|
||||
|
||||
-- Libero i numeri di riga richiesti
|
||||
-- diminuendo il numero di riga di un valore inutilizzato (Es: 0.5)
|
||||
|
||||
UPDATE tb_tipi_mat
|
||||
SET
|
||||
cod_step = cod_step - 0.5
|
||||
WHERE
|
||||
cod_tipo = v_cod_tipo;
|
||||
|
||||
UPDATE tb_tipi_mat
|
||||
SET
|
||||
cod_step = cod_step - 0.5
|
||||
WHERE
|
||||
cod_step = v_cod_step_new;
|
||||
|
||||
-- Sposto la riga precedente al posto di quella selezionata (Es: row 1 diventerà row 2)
|
||||
|
||||
UPDATE tb_tipi_mat
|
||||
SET
|
||||
cod_step = v_cod_step
|
||||
WHERE
|
||||
cod_step = v_cod_step_new - 0.5;
|
||||
|
||||
-- Sposto la riga selezionata al nuovo posto
|
||||
|
||||
UPDATE tb_tipi_mat
|
||||
SET
|
||||
cod_step = v_cod_step_new
|
||||
WHERE
|
||||
cod_tipo = v_cod_tipo;
|
||||
|
||||
v_return := 'cod_tipo: '
|
||||
|| v_cod_tipo
|
||||
|| ' - From Row '
|
||||
|| v_cod_step
|
||||
|| ' - To Row '
|
||||
|| v_cod_step_new;
|
||||
|
||||
ELSIF v_direc = 'DESC' THEN
|
||||
|
||||
-- Seleziono i numeri di riga
|
||||
SELECT
|
||||
cod_step,
|
||||
cod_step + 1
|
||||
INTO
|
||||
v_cod_step,
|
||||
v_cod_step_new
|
||||
FROM
|
||||
tb_tipi_mat
|
||||
WHERE
|
||||
upper(TRIM(cod_tipo)) = upper(TRIM(v_cod_tipo));
|
||||
|
||||
-- Libero i numeri di riga richiesti
|
||||
-- diminuendo il numero di riga di un valore inutilizzato (Es: 0.5)
|
||||
|
||||
UPDATE tb_tipi_mat
|
||||
SET
|
||||
cod_step = cod_step + 0.5
|
||||
WHERE
|
||||
cod_tipo = v_cod_tipo;
|
||||
|
||||
UPDATE tb_tipi_mat
|
||||
SET
|
||||
cod_step = cod_step + 0.5
|
||||
WHERE
|
||||
cod_step = v_cod_step_new;
|
||||
|
||||
-- Sposto la riga precedente al posto di quella selezionata (Es: row 1 diventerà row 2)
|
||||
|
||||
UPDATE tb_tipi_mat
|
||||
SET
|
||||
cod_step = v_cod_step
|
||||
WHERE
|
||||
cod_step = v_cod_step_new + 0.5;
|
||||
|
||||
-- Sposto la riga selezionata al nuovo posto
|
||||
|
||||
UPDATE tb_tipi_mat
|
||||
SET
|
||||
cod_step = v_cod_step_new
|
||||
WHERE
|
||||
cod_tipo = v_cod_tipo;
|
||||
|
||||
v_return := 'cod_tipo: '
|
||||
|| v_cod_tipo
|
||||
|| ' - From row. '
|
||||
|| v_cod_step
|
||||
|| ' - To row: '
|
||||
|| v_cod_step_new;
|
||||
|
||||
END IF;
|
||||
|
||||
o_return := v_return;
|
||||
END;```
|
||||
Reference in New Issue
Block a user