查看: 1395|回复: 2
|
Firebird: Stored Procedure 的问题
[复制链接]
|
|
我用 Firebird database,
我 create 以下的 procedure 时:
"
SET TERM ^ ;
CREATE PROCEDURE "View_Data"
AS
BEGIN
Select * From "TryTable";
END^
SET TERM ; ^
"
Error 是 :
"
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 4, char 28
;
"
请问问题出在哪里?难道是 error message 里说的";"?
因为网上的例子完全都有用分号";",
以下是网上的例子:
"
CREATE PROCEDURE SUB_TOT_BUDGET
(
HEAD_DEPT CHAR(3)
)
RETURNS (
TOT_BUDGET NUMERIC (15, 2),
AVG_BUDGET NUMERIC (15, 2),
MIN_BUDGET NUMERIC (15, 2),
MAX_BUDGET NUMERIC (15, 2)
)
AS
BEGIN
SELECT SUM(budget), AVG(budget), MIN(budget), MAX(budget)
FROM department
WHERE head_dept = :head_dept
INTO :tot_budget, :avg_budget, :min_budget, :max_budget;
SUSPEND;
END ^
"
我想了很久都不知道错在哪里,
请问有人可以帮忙吗?
谢谢!!
[ 本帖最后由 nicholes82 于 19-4-2006 05:45 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 20-4-2006 12:13 AM
|
显示全部楼层
firebird 的 stored procedure 每一行都要以 ; 做為結尾
你的 SP 裏面沒有 RETURN VALUE, 所以會有 error
還有就是你的 sp 裏只 return 1 row, 所以也會有 error
修改後的 sp
- SET TERM ^ ;
- CREATE PROCEDURE SP1
- RETURNS (
- C1 INTEGER,
- C2 VARCHAR(30),
- C3 DATE)
- AS
- begin
- for select * from TABLE1 into :C1, :C2, :C3
- do suspend;
- end
- ^
- SET TERM ; ^
复制代码
我的 table1 有 3 個 column, 分別是 integer, varchar(30), 和 date
[ 本帖最后由 flashang 于 20-4-2006 12:22 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 20-4-2006 09:58 AM
|
显示全部楼层
原帖由 flashang 于 20-4-2006 12:13 AM 发表
firebird 的 stored procedure 每一行都要以 ; 做為結尾
你的 SP 裏面沒有 RETURN VALUE, 所以會有 error
還有就是你的 sp 裏只 return 1 row, 所以也會有 error
修改後的 sp
[code]
SET TERM ^ ;
C ...
谢谢你,问题解决了。
就是说 SP 一定要有 return value, 除非 insert data 进 database 才不用 return value? |
|
|
|
|
|
|
| |
本周最热论坛帖子
|