stored procdure 預儲程序 |
答題得分者是:danny
|
anguslin
一般會員 發表:6 回覆:6 積分:2 註冊:2002-09-09 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
提供你一個inerbase附的sample參考
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ; /* Stored procedures */ CREATE PROCEDURE GET_EMP_PROJ
(
EMP_NO SMALLINT
)
RETURNS
(
PROJ_ID CHAR(5) CHARACTER SET ISO8859_1
)
AS
BEGIN EXIT; END ^ ALTER PROCEDURE GET_EMP_PROJ
(
EMP_NO SMALLINT
)
RETURNS
(
PROJ_ID CHAR(5) CHARACTER SET ISO8859_1
)
AS
BEGIN
FOR SELECT proj_id
FROM employee_project
WHERE emp_no = :emp_no
INTO :proj_id
DO
SUSPEND;
END
^ SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON; @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@ |
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
|
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
引言: 請問各位大大..... interbase (*.gdb) 的預儲程序怎麼寫..... 都只有看見ms-sql的範例而已.... 我這樣寫錯在哪 CREATE PROCDURES test_stored_procudure AS BEGIN select * from table1 END您錯在 select 出超過一筆資料. 如果您要 select 的是超過一筆資料的話, 要改成如下: CREATE PROCDURES test_stored_procudure RETURNS ( Field1 VARCHAR(5), Field2 VARCHAR(5), Field3 VARCHAR(5), Field4 VARCHAR(5) ) AS BEGIN for select * from table1 into Field1, Field2, Field3, Field4 do suspend;END 發表人 - danny 於 2002/09/09 18:07:08
------
將問題盡快結案也是一種禮貌! |
anguslin
一般會員 發表:6 回覆:6 積分:2 註冊:2002-09-09 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
anguslin
一般會員 發表:6 回覆:6 積分:2 註冊:2002-09-09 發送簡訊給我 |
|
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
引言: 我用sp1.execproc但我怎麼抓取他回傳的資料....我都只能看到第一筆 那interbase的stored procudures 不能像ms-sql 用dataset元件嗎/// 那不能用sp1.next 之類的功能了嗎 煩請各位大大解答,給予指教謝謝基本上如果您用的是 TStoreprocedure 之類元件只能取回一筆或零筆(無傳回值), 如果是用 TDataSet 之類(TQuery, TTable, TIBQuery)元件就無此限制. SQL 語法像這樣 select * from SP1(:Param1, :Param2 ...) 有取回值: q1.Open 無取回值: q1.ExecSQL 另外 Interbase 的 Store Procedure 限制很多無法像 MS-SQL Server 那麼多功能, 您可能要多試試...
------
將問題盡快結案也是一種禮貌! |
anguslin
一般會員 發表:6 回覆:6 積分:2 註冊:2002-09-09 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
anguslin
一般會員 發表:6 回覆:6 積分:2 註冊:2002-09-09 發送簡訊給我 |
///[?Tsotredproc岆褫眕蚰嗣遁揃蹋,褫岆猁饜磁斕?腔STORED PROCEDURE腔隙儽B,猁岆CURSOR倰B符褫///// 褫眕???瞰諒諒扂......眕狟岆扂?腔猁⺼睡蜊?
CREATE PROCEDURE CITY_TEST RETURNS (
CITY VARCHAR(3),
NAME VARCHAR(6)
) AS
BEGIN
for
select city,name from city into city,name
do suspend;
END .............饒婓delphi猁⺼睡諉彶隙巘菽....
珴珴蠟....?硌諒
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
引言: 那他的Tsotredproc元件有什麼功能及存在價值 因為我在Tquery元件直接下sql指令就可存取資料庫的storedprocudure ..... 還有一個問題....用Tquery去存取stored-procudure 與 Tquery直接去存取資料表....兩者有何差別性....效能上有差異嗎其實我都不用 Tsotredproc 元件, 因為可以用 TQuery 代替, 而且比較沒有 BUG 不論您是用 Tquery or stored-procudure 去存取資料表, 效果是相的. 基本上 Store Procedure 會比您直接下 SQL 語法快, 但這不是絕對的 ... 有時 Store Procedure 反而比較慢, 這是因為沒用到 Index 的關係, 我試過同樣的語法 直接下SQL指令 會用到 Index 但 Store Procedure 是用 NATURAL SCAN TABLE 方式, 速度差了十萬八千里, 但只要強迫指定 PLAN 使用 Index 就速度飛快. 附帶一提 InterBase 的 Store Procedure 不能使用 CURSOR
------
將問題盡快結案也是一種禮貌! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |