線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2164
推到 Plurk!
推到 Facebook!

stored procdure 預儲程序

答題得分者是:danny
anguslin
一般會員


發表:6
回覆:6
積分:2
註冊:2002-09-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-09 17:20:35 IP:211.23.xxx.xxx 未訂閱
請問各位大大..... interbase (*.gdb) 的預儲程序怎麼寫..... 都只有看見ms-sql的範例而已.... 我這樣寫錯在哪 CREATE PROCDURES test_stored_procudure AS BEGIN select * from table1 END 字拼錯請忽在意 煩請各位教教小弟
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-09-09 17:40:46 IP:211.20.xxx.xxx 未訂閱
提供你一個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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-09-09 17:49:04 IP:61.220.xxx.xxx 未訂閱
你拼錯字不知道是本身的錯字還是問問題的錯字    < >< > 回首來時路 也無風雨也無晴~~@.@
------
天行健
君子當自強不息~~@.@
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-09-09 18:06:21 IP:210.200.xxx.xxx 未訂閱
引言: 請問各位大大..... 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-09-09 23:20:56 IP:61.59.xxx.xxx 未訂閱
THANS!! 可以建立了 但是又有問題.....在delphi我沒辦法將stored procrudre (SP1) 開啟 我指令下SP1.open; 卻會產生錯誤 "ERROR Creating Cursor Handle" 敬請各位大大指教
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-09-09 23:41:06 IP:211.23.xxx.xxx 未訂閱
要用SP1.EXECPROC @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
anguslin
一般會員


發表:6
回覆:6
積分:2
註冊:2002-09-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-09-10 08:53:58 IP:211.23.xxx.xxx 未訂閱
我用sp1.execproc但我怎麼抓取他回傳的資料....我都只能看到第一筆 那interbase的stored procudures 不能像ms-sql 用dataset元件嗎/// 那不能用sp1.next 之類的功能了嗎 煩請各位大大解答,給予指教謝謝
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-09-10 09:27:57 IP:210.200.xxx.xxx 未訂閱
引言: 我用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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-09-10 10:00:47 IP:211.23.xxx.xxx 未訂閱
danny大大..... 那他的Tsotredproc元件有什麼功能及存在價值 因為我在Tquery元件直接下sql指令就可存取資料庫的storedprocudure ..... 還有一個問題....用Tquery去存取stored-procudure 與 Tquery直接去存取資料表....兩者有何差別性....效能上有差異嗎 懇請賜教無限感激
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-09-10 10:22:51 IP:211.20.xxx.xxx 未訂閱
其實Tsotredproc是可以抓取多筆資料,可是要配合你寫的STORED PROCEDURE的回傳型態,要是CURSOR型態才可 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
anguslin
一般會員


發表:6
回覆:6
積分:2
註冊:2002-09-09

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-09-10 10:33:52 IP:211.23.xxx.xxx 未訂閱
///[?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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-09-10 11:07:51 IP:211.20.xxx.xxx 未訂閱
不好意思我對INTERBASE不熟,因為我們是用ORACLE @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-09-10 11:56:12 IP:210.200.xxx.xxx 未訂閱
引言: 那他的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
------
將問題盡快結案也是一種禮貌!
系統時間:2024-05-05 16:35:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!