全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:768
推到 Plurk!
推到 Facebook!

以下這程式若是不用master而用如pubs可以做得到嗎?

答題得分者是:timhuang
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-18 11:36:16 IP:202.145.xxx.xxx 未訂閱
以下程式是Michkey大大的作品    若是不use master而use如pubs內的資料 這麼做的話就不可行了 請教可能在其他的資料庫中使用這種相關的觸發嗎?
library Project2;    uses
ShareMem,
SysUtils,
Classes;    {$R *.res}    function xp_test:boolean; stdcall;
begin
result := False;
with TStringList.Create do begin
try
add('MSSQL Extend Store Procedure Test (' datetimetostr(now) ')');
savetofile('c:\temp.txt');
finally
free;
end;
end;
result := True;
end;    exports
xp_test;
end.
-- End Delphi DLL Project    -- MS SQL T-SQL
-- ReCreate Extend Store Procedure
use master
go
if exists 
(select * from master.dbo.sysobjects where id = object_id('xp_test')) 
execute sp_dropextendedproc 'xp_test' 
sp_dropextendedproc只能在master 資料庫中使用
go    execute sp_addextendedproc 'xp_test', 'd:\temp\Project2.dll'
sp_addextendedproc只能在master 資料庫中使用
go    -- Execute Extend Store Procedure
begin
declare @c int
execute @c=xp_test
select @c
end
go
堅持從洗馬桶做起 Eric
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-18 12:16:59 IP:61.62.xxx.xxx 未訂閱
Hi, 延伸預儲程序僅能放在 master database 之中, 若是要在其他 database 中使用的話, 則必須指定 database name 才能呼叫得到! 如: master..xp_test 因為除了 master database 外, 其餘 database 是不能存放 Extended Stored Procedures
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-18 13:02:25 IP:202.145.xxx.xxx 未訂閱
請教若是想在sql2000異動table以觸發.dll檔的話 除了Extended Stored Procedures的方法還有其他方法嗎? 因為在master資料庫內的資料不能異動 必須在其他的資料庫觸發.dll檔 堅持從洗馬桶做起 Eric 發表人 - huangeider 於 2004/04/18 13:07:51
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-18 14:17:22 IP:61.62.xxx.xxx 未訂閱
當然可以啊, 我前一篇的說明是說 延伸預儲程序 只能放在 master 中, 但不表示在其他的 database 不能呼叫, 只是要加上前置 master 這樣才行啊. 所以你可以在你建立的 trigger 中使用這些延伸預儲程序沒有問題的.
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-18 14:44:57 IP:202.145.xxx.xxx 未訂閱
小弟請教一下 下面紅色部份的id中在master資料庫 中只有數字並沒有xp_test這字串 xp_test這字串是放在name這個欄位才對為何下面這程式還可執行 應改成這樣嗎? if exists  (select * from master.dbo.sysobjects where name = object_id('xp_test')) library Project2; uses ShareMem, SysUtils, Classes; {$R *.res} function xp_test:boolean; stdcall; begin result := False; with TStringList.Create do begin try add('MSSQL Extend Store Procedure Test (' datetimetostr(now) ')'); savetofile('c:\temp.txt'); finally free; end; end; result := True; end; exports xp_test; end. -- End Delphi DLL Project -- MS SQL T-SQL -- ReCreate Extend Store Procedure use master go if exists (select * from master.dbo.sysobjects where id = object_id('xp_test')) execute sp_dropextendedproc 'xp_test' go execute sp_addextendedproc 'xp_test', 'd:\temp\Project2.dll' go -- Execute Extend Store Procedure begin declare @c int execute @c=xp_test select @c end go 堅持從洗馬桶做起 Eric
系統時間:2024-06-02 17:39:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!