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

轉換interbase procedure為mssql格式的問題

尚未結案
harry112
一般會員


發表:7
回覆:9
積分:3
註冊:2002-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-09 16:25:05 IP:211.21.xxx.xxx 未訂閱
請問: 小弟想將interbase的stored procedure轉為mssql的語法,但會有錯誤如下: 錯誤170:行14:'='附近的語法不正確 請幫我看看該怎麼修改,謝謝。 interbase的procedure: ALTER PROCEDURE "GETFOREIGNSQL" ( "FRN" VARCHAR(25) ) RETURNS ( "NAM" VARCHAR(25), "TBN" VARCHAR(25), "FDS1" VARCHAR(50), "FTB" VARCHAR(25), "FDS2" VARCHAR(50) ) AS DECLARE VARIABLE FRG Integer; DECLARE VARIABLE FED1 VarChar(25); DECLARE VARIABLE FED2 VarChar(25); BEGIN select F.SID,F.NAM,T1.NAM,T2.NAM from FOREIGNS F, TABLES T1, TABLES T2 where T1.SID=F.JON and T2.SID=F.TBL and F.NAM=:FRN into FRG,NAM,TBN,FTB; FOR select F1.NAM,F2.NAM from FOREIGNCOLS F, INDEXCOLS I, FIELDS F1, FIELDS F2 where I.SID=F.IXC and F1.SID=F.FED and F2.SID=I.FED and F.JON=:FRG into FED1,FED2 DO IF (FDS1 IS NULL) THEN BEGIN FDS1 = FED1; FDS2 = FED2; END ELSE BEGIN FDS1 = FDS1 || ',' || FED1; FDS2 = FDS2 || ',' || FED2; END SUSPEND; END ; 小弟修改為mssql procedure但有錯誤: CREATE PROCEDURE GETFOREIGNSQL @FRN varchar(25), @NAM VARCHAR(25) output, @TBN VARCHAR(25) output, @FDS1 VARCHAR(50) output, @FTB VARCHAR(25) output, @FDS2 VARCHAR(50) output AS DECLARE @FRG Int DECLARE @FED1 VarChar(25) DECLARE @FED2 VarChar(25) select @FRG=F.SID,@NAM=F.NAM,@TBN=T1.NAM,@FTB=T2.NAM from FOREIGNS as F, TABLES as T1, TABLES as T2 where T1.SID=F.JON and T2.SID=F.TBL and F.NAM=@FRN WHILE (select @FED1=F1.NAM,@FED2=F2.NAM from FOREIGNCOLS as F, INDEXCOLS as I, FIELDS as F1, FIELDS as F2 where I.SID=F.IXC and F1.SID=F.FED and F2.SID=I.FED and F.JON=@FRG) BEGIN IF @FDS1 IS NULL BEGIN select @FDS1 = @FED1 select @FDS2 = @FED2 END ELSE BEGIN select @FDS1 = @FDS1 ',' @FED1 select @FDS2 = @FDS2 ',' @FED2 END END 發表人 - harry112 於 2004/06/09 16:26:48
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-17 17:55:22 IP:210.66.xxx.xxx 未訂閱
CREATE PROCEDURE GETFOREIGNSQL
@FRN varchar(25),
@NAM VARCHAR(25) output,
@TBN VARCHAR(25) output,
@FDS1 VARCHAR(50) output,
@FTB VARCHAR(25) output,
@FDS2 VARCHAR(50) output
AS
DECLARE @FRG Int
DECLARE @FED1 VarChar(25)
DECLARE @FED2 VarChar(25)
select @FRG=F.SID,@NAM=F.NAM,@TBN=T1.NAM,@FTB=T2.NAM from FOREIGNS as F, TABLES as T1, TABLES as T2
where T1.SID=F.JON and T2.SID=F.TBL and F.NAM=@FRN

WHILE (select @FED1=F1.NAM,@FED2=F2.NAM from FOREIGNCOLS as F, INDEXCOLS as I, FIELDS as F1, FIELDS as F2 
where I.SID=F.IXC and F1.SID=F.FED and F2.SID=I.FED and F.JON=@FRG)    BEGIN
IF @FDS1 IS NULL 
BEGIN
select @FDS1 = @FED1
select @FDS2 = @FED2
END
ELSE
BEGIN
select @FDS1 = @FDS1   ','   @FED1
select @FDS2 = @FDS2   ','   @FED2
END
END
不好意思!小弟有個問題, While的語法 WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] Boolean_expression:是傳回 TRUE 或 FALSE 的運算式。如果布林運算式包含 SELECT 陳述式,SELECT 陳述式必須以括號括起來。 可是你的While後面的SELECT 陳述式看不出是傳回 TRUE 或 FALSE 的運算式啊! 是不是可以把它改一下,讓它傳回True or False! Ian
系統時間:2024-09-29 1:02:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!