SQL Server クエリのこのパラメーター - 作成中の Oracle クエリにコピーしますが、コンパイルされません。
PROCEDURE OGEN.DBD_NOT_GET_NOTES_DETAIL のコンパイル エラー
エラー: PLS-00103: 次のいずれかを想定しているときに、記号「(」が検出されました:
:= . ) , @ % デフォルト
の文字 記号 ":=" が "(" の代わりに使用され、続行されました。行: 6 テキスト: , NOTETYPE NUMERIC(1) = 1
これをOracleでコーディングするにはどうすればよいですか?
完全な SQL Server T-SQL クエリ:
ALTER PROCEDURE [OEN].[DB_NOT_GET_NOTES_DETAIL]
(
@FACILITYKEY CHAR(4),
@DATEFROM DATETIME,
@DATETHRU DATETIME,
@UNITSTR VARCHAR(250),
@NOTETYPE NUMERIC(1) = 1
)
AS
BEGIN
SELECT P.FACILITY_KEY, P.PAT_NUMBER, P.PATIENT_ID,
OEN.DATEONLY(N.CREATED_ON) CREATED_ON, N.NOTE_HEADER,
N.CREATED_BY, P.LAST_NAME, P.FIRST_NAME, P.MIDDLE_NAME, P.UNIT_CODE
FROM OEN.EN_M_PATIENT_MAST P INNER JOIN OPTC.NOT_M_MAST N
ON (P.PAT_NUMBER = N.PAT_NUMBER AND N.FACILITY_KEY = @FACILITYKEY)
WHERE N.NOTE_STATUS = 0
AND (OEN.DATEONLY(N.CREATED_ON) BETWEEN OEN.DATEONLY(@DATEFROM) AND OEN.DATEONLY(@DATETHRU))
AND (@UNITSTR IS NULL OR @UNITSTR = '' OR CHARINDEX(P.UNIT_CODE, @UNITSTR) % 2 = 1)
AND @NOTETYPE = 1
END
オラクルのバージョン:
CREATE OR REPLACE PROCEDURE OEN.DBD_NOT_GET_NOTES_DETAIL (
FACILITYKEY varchar2
, DATEFROM DATE
, DATETHRU DATE
, UNITSTR varchar2
, NOTETYPE NUMERIC(1) = 1
, OCURSOR OUT SYS_REFCURSOR
) as
BEGIN
OPEN OCURSOR FOR
SELECT P.FACILITY_KEY,
P.PAT_NUMBER,
P.PATIENT_ID,
OEN.DATEONLY(N.CREATED_ON) CREATED_ON, N.NOTE_HEADER,
N.CREATED_BY, P.LAST_NAME, P.FIRST_NAME, P.MIDDLE_NAME, P.UNIT_CODE
FROM OEN.EN_M_PATIENT_MAST P
INNER JOIN OPTC.NOT_M_MAST N ON (P.PAT_NUMBER = N.PAT_NUMBER AND N.FACILITY_KEY = FACILITYKEY)
WHERE N.NOTE_STATUS = 0
AND (OEN.DATEONLY(N.CREATED_ON) BETWEEN OEN.DATEONLY(DATEFROM) AND OEN.DATEONLY(DATETHRU))
AND CREATED_ON BETWEEN DATEFROM AND DATETHRU
AND (UNITSTR IS NULL OR P.UNIT_CODE = UNITSTR);
END;