这种功能,Oracle, DB2, SQL Server 都可以提供了。 简单的是 Trigger Call Java Store procedure which communicate with system application.
Append:SQL Server: xp_cmdshell call command line application sp_OA* procedures (sp_OACreate, sp_OAMethod, sp_OADestroy, sp_OASetProperty, sp_OAGetProperty) call COMOracle: (NT):Function GETCOMPUTERNAME (lpbufer IN OUT VARCHAR2, nsize IN OUT BINARY_INTEGER) RETURN BINARY_INTEGER IS EXTERNAL LIBRARY Kernel32 NAME "GetComputerNameA" LANGUAGE C CALLING STANDARD PASCAL;Oracle(UNIX): CREATE OR REPLACE LIBRARY libosint AS '/oracle/product/8.0.5/plsql/demo/libosint.so';PROCEDURE RunOsCmdReg(cmdin IN VARCHAR2, cmdoutput OUT VARCHAR2) IS EXTERNAL NAME "RunOsCmd" /* Function in Shared libosint.so */ LIBRARY libosint WITH CONTEXT PARAMETERS (CONTEXT, cmdin STRING, cmdin INDICATOR SHORT, cmdin LENGTH INT, cmdoutput STRING, cmdoutput INDICATOR SHORT, cmdoutput LENGTH INT); DB2: Java store procedure
对于不含触发器的数据库,该用什么方法呢?
难道只能遍历吗?
简单的是 Trigger Call Java Store procedure which communicate with system application.
sp_OA* procedures (sp_OACreate, sp_OAMethod, sp_OADestroy, sp_OASetProperty, sp_OAGetProperty) call COMOracle: (NT):Function GETCOMPUTERNAME (lpbufer IN OUT VARCHAR2,
nsize IN OUT BINARY_INTEGER)
RETURN BINARY_INTEGER
IS EXTERNAL
LIBRARY Kernel32
NAME "GetComputerNameA"
LANGUAGE C
CALLING STANDARD PASCAL;Oracle(UNIX):
CREATE OR REPLACE LIBRARY libosint AS
'/oracle/product/8.0.5/plsql/demo/libosint.so';PROCEDURE RunOsCmdReg(cmdin IN VARCHAR2, cmdoutput OUT VARCHAR2)
IS EXTERNAL
NAME "RunOsCmd" /* Function in Shared libosint.so */
LIBRARY libosint
WITH CONTEXT
PARAMETERS (CONTEXT,
cmdin STRING,
cmdin INDICATOR SHORT,
cmdin LENGTH INT,
cmdoutput STRING,
cmdoutput INDICATOR SHORT,
cmdoutput LENGTH INT);
DB2: Java store procedure