oracle vba access-vba ms-access-2003

Pasar una variable de Access(frontend) a Oracle(back-end) Procedimiento almacenado



vba access-vba (1)

Estoy importando un archivo csv a la tabla de Oracle, escribí el procedimiento en pl / sql que tiene un parámetro de entrada que pasa el nombre del archivo al procedimiento. Quiero dar ese valor de parámetro IN desde ms access (frontend), estoy llamando al procedimiento mediante la consulta de paso a paso, en el que escribí

call EXT_TABLE() , ¿cómo call EXT_TABLE() pasar el parámetro IN aquí ... mi código plsql está escrito debajo

CREATE OR REPLACE PROCEDURE EXT_TABLE (file_name in varchar2) AS L_QUERY VARCHAR2(1000) := NULL; L_DROP VARCHAR2(10000) := NULL; BEGIN EXECUTE IMMEDIATE ''CREATE TABLE IMPORT_TEST ( EMP_ID NUMBER (10) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY IMPORT ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY '''','''' MISSING FIELD VALUES ARE NULL ) LOCATION (''''''||file_name ||'''''') )reject limit unlimited''; L_QUERY:= ''INSERT INTO MPRN SELECT * FROM IMPORT_TEST''; EXECUTE IMMEDIATE L_QUERY; L_DROP := ''drop table IMPORT_TEST ''; execute immediate L_DROP; commit; END EXT_TABLE;

Importar es directorio, mprn es mi nombre de archivo que tiene solo una columna. Quiero ese file_name de MS ACCESS que puedo pasar al procedimiento y puedo importarlo


No abuse de SQL dinámico, pruebe algo como:

CREATE TABLE IMPORT_TEST( EMP_ID NUMBER (10) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY IMPORT ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY '''','''' MISSING FIELD VALUES ARE NULL ) LOCATION (''some_default_filename'') )reject limit unlimited ; CREATE OR REPLACE PROCEDURE EXT_TABLE(file_name in varchar2) AS BEGIN EXECUTE IMMEDIATE ''ALTER TABLE IMPORT_TEST LOCATION (''''''||file_name ||'''''')''; INSERT INTO MPRN SELECT * FROM IMPORT_TEST; END EXT_TABLE;

Para ejecutar este procedimiento, ejecuta: execute EXT_TABLE(file_name => ''my_new_file_name'');

Para ejecutar este procedimiento desde MS ACCESS, debe usar VBA

  1. Configure su conexión ODBC
  2. Cree un procedimiento que ejecutará el Procedimiento almacenado de Oracle.