|
Určení adresářů s DLL knihovnami pro SQL server | Rutiny uložené na serveru |
Vytvoříme funkci, která na 602SQL serveru smaže určenou hodnotu z určeného klíče v registru Windows. Ke smazání hodnoty je třeba zpřístupnit 3 funkce ze systémové knihovny ADVAPI32.DLL.
function RegOpenKeyEx(IN hKey INT, INOUT lpSubKey CHAR(100), IN ulOptions INT, IN samDesired INT, OUT phkResult INT) returns int; external name 'RegOpenKeyExA@advapi32.dll'; function RegCloseKey(IN hKey INT) returns int; external name 'RegCloseKey@advapi32.dll'; function RegDeleteValue(IN hKey INT, INOUT lpValueName CHAR(100)) returns int; external name 'RegDeleteValueA@advapi32.dll';
Funkce RegOpenKeyEx a RegDeleteValue jsou v knihovně ADVAPI32.DLL s písmenem A na konci jména, což indikuje, že jejich řetězcové parametry používají 8-bitové znaky. Knihovnu ADVAPI32.DLL je třeba zpřístupnit pro 602SQL server. Protože není bezpečné povolit volání knihoven ze systémového adresáře Windows, kde se tato knihovna normálně nachází, je lepší:
Funkce, která smaže hodnotu z registru, může vypadat takto:
function Delete_value_in_reg_LM(IN key_name CHAR(100), IN value_name CHAR(100)) returns int; BEGIN declare HKEY_LOCAL_MACHINE int default -2147483646; declare KEY_ALL_ACCESS int default 983103; declare hSubKey int; declare res int; SET res = RegOpenKeyEx(HKEY_LOCAL_MACHINE, key_name, 0, KEY_ALL_ACCESS, hSubKey); if res=0 then SET res=RegDeleteValue(hSubKey, value_name); call RegCloseKey(hSubKey); end if; return res; END
Tato verze je určena pouze pro mazání v sekci Local Machine.
Určení adresářů s DLL knihovnami pro SQL server | Rutiny uložené na serveru |