Saltar al contenido

Crear bibliotecas definidas por el usuario SQLScript

Las bibliotecas están diseñadas para agrupar variables, funciones y procedimientos relacionados dentro de un objeto común. Estos miembros de la biblioteca pueden exponerse utilizando la palabra clave PULBIC, o configurarse para ser consumibles solo dentro de la propia biblioteca utilizando la palabra clave PRIVATE.


Paso 1: cree una carpeta de biblioteca

Regrese a SAP Web IDE para SAP HANA y haga clic derecho en el src carpeta y seleccione Nuevo, entonces Carpeta.

Ingrese el nombre de la carpeta como bibliotecas y haga clic en Bueno.

diálogo

Hecho

Inicie sesión para responder la pregunta

Paso 2: crear una nueva biblioteca definida por el usuario

Haga clic derecho en la carpeta de bibliotecas y seleccione Nuevo, entonces Artefacto de base de datos.

editor

Ingrese el nombre del archivo como masterdata, establezca el tipo de artefacto como .hdblibrary y haga clic en Bueno.

diálogo

Hecho

Inicie sesión para responder la pregunta

Paso 3: vaya al shell de la biblioteca

Vaya al shell de la biblioteca como se muestra aquí.

LIBRARY "masterdata"
  LANGUAGE SQLSCRIPT AS
 BEGIN


END;

Hecho

Inicie sesión para responder la pregunta

Paso 4: definir una variable pública

Entre las declaraciones BEGIN y END, defina un miembro de biblioteca pública variable llamado rowcount con tipo int.

public variable rowcount int;

Hecho

Inicie sesión para responder la pregunta

Paso 5: definir una función pública

Después de la variable pública, defina una función pública de miembro de la biblioteca como se muestra aquí.

public function "employee_exists"(
             in im_employee_id nvarchar(10) )
             returns res boolean as
begin
    declare lv_count int;
    select count(*) into lv_count from "MD.Employees"
                           where employeeid = im_employee_id;
    if  lv_count > 0 then
     res = true;
    else
     res = false;
    end if;
end;

Hecho

Inicie sesión para responder la pregunta

Paso 6: definir los procedimientos públicos

Después de la función pública, dos bibliotecarios definieron un procedimiento público, uno llamado get_employee_data y el otro get_business_partner_data.

public procedure "get_employee_data"(
             out ex_employees "MD.Employees" )
   LANGUAGE SQLSCRIPT
   SQL SECURITY INVOKER
   AS
begin
  ex_employees = select * from "MD.Employees";
  rowcount = record_count(:ex_employees);
end;

public procedure "get_business_partner_data"(
             out ex_businesspartners "MD.BusinessPartner" )
   LANGUAGE SQLSCRIPT
   SQL SECURITY INVOKER
    AS
begin
  ex_businesspartners = select * from "MD.BusinessPartner";
  rowcount = record_count(:ex_businesspartners);
end;

Hecho

Inicie sesión para responder la pregunta

Paso 7: revise el código de finalización

Esto debería verse como el código completo.

LIBRARY "masterdata"
  LANGUAGE SQLSCRIPT AS
 BEGIN

   public variable rowcount int;

   public function "employee_exists"(
                in im_employee_id nvarchar(10) )
                returns res boolean as
   begin
       declare lv_count int;
       select count(*) into lv_count from "MD.Employees"
                              where employeeid = im_employee_id;
       if  lv_count > 0 then
        res = true;
       else
        res = false;
       end if;
   end;

   public procedure "get_employee_data"(
                out ex_employees "MD.Employees" )
      LANGUAGE SQLSCRIPT
      SQL SECURITY INVOKER
      AS
   begin
     ex_employees = select * from "MD.Employees";
     rowcount = record_count(:ex_employees);
   end;

   public procedure "get_business_partner_data"(
                out ex_businesspartners "MD.BusinessPartner" )
      LANGUAGE SQLSCRIPT
      SQL SECURITY INVOKER
       AS
   begin
     ex_businesspartners = select * from "MD.BusinessPartner";
     rowcount = record_count(:ex_businesspartners);
   end;

END;

Hecho

Inicie sesión para responder la pregunta

Paso 8: guarde su trabajo

Salvar tu trabajo.

salvar

Hecho

Inicie sesión para responder la pregunta

Paso 9: cree un procedimiento

Utilice lo que ha aprendido y cree un nuevo procedimiento en la denominada carpeta de procedimientos. get_master_data. Debido a que nuestros procedimientos de biblioteca actualizan las variables de la biblioteca, también necesitamos leer / escribir nuestro procedimiento exhaustivo, así que asegúrese de LEER DETALLES SQL de este procedimiento como se muestra.

salvar

Hecho

Inicie sesión para responder la pregunta

Paso 10: definir los parámetros de salida

Ingrese los parámetros de salida en la firma del procedimiento.

out ex_emp_exists boolean,
out ex_employees "MD.Employees",
out ex_emp_count int,
out ex_business_partners "MD.BusinessPartner",
out ex_bp_count int

Hecho

Inicie sesión para responder la pregunta

Paso 11: Aprovechar a los miembros de la biblioteca del procedimiento

Ingrese el código entre las declaraciones BEGIN y END. Llame primero a la función de escalado y envíe el resultado al parámetro de salida. Luego llame a los procedimientos y reenvíe el resultado a los parámetros de salida, así como reenvíe la variable de biblioteca a los parámetros de salida.


ex_emp_exists = "masterdata":"employee_exists"('199999'); call "masterdata":"get_employee_data"( ex_employees ); ex_emp_count = "masterdata":rowcount; call "masterdata":"get_business_partner_data"( ex_business_partners ); ex_bp_count = "masterdata":rowcount;

Hecho

Inicie sesión para responder la pregunta

Paso 12: revise el código de finalización

El código completo debería tener el mismo aspecto que este.

PROCEDURE "get_master_data"(              
	             out ex_emp_exists boolean,
	             out ex_employees "MD.Employees",
	             out ex_emp_count int,
	             out ex_business_partners "MD.BusinessPartner",
	             out ex_bp_count int
 )
   LANGUAGE SQLSCRIPT
   SQL SECURITY INVOKER
   --DEFAULT SCHEMA <default_schema_name>
    AS
BEGIN

 ex_emp_exists  = "masterdata":"employee_exists"('199999');   

 call "masterdata":"get_employee_data"( ex_employees );
 ex_emp_count = "masterdata":rowcount;

 call "masterdata":"get_business_partner_data"( ex_business_partners );
 ex_bp_count = "masterdata":rowcount;


END

Hecho

Inicie sesión para responder la pregunta

Paso 13: guarde, cree, ejecute y verifique los resultados

Utilice lo que ha aprendido y guarde su trabajo, desarrolle el módulo. Luego regrese al Explorador de la base de datos y llame al procedimiento y verifique los resultados.

salvar

Hecho

Inicie sesión para responder la pregunta