















create or replace function F_GETTABLELID(strTableName IN VARCHAR2 DEFAULT NULL) return VARCHAR2 is
Result VARCHAR2(9);
StoO_rowcnt INTEGER;
strIndex NUMBER(9, 0);
BEGIN
NULL;
BEGIN
StoO_rowcnt := 0;
UPDATE SS_TablesID T
SET t.CurrentIDindex = t.CurrentIDindex + 1
WHERE TableName = strTableName RETURNING CurrentIDindex INTO
strIndex;
StoO_rowcnt := SQL%ROWCOUNT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
IF StoO_rowcnt = 0 THEN
BEGIN
strIndex := 1;
BEGIN
INSERT INTO SS_TablesID
(TableName, CurrentIDindex)
VALUES
(strTableName, strIndex);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
END;
END IF;
Result := lpad(CAST(strIndex as varchar2), 9, '0');
return(Result);
end F_GETTABLELID;
多表时:
CREATE OR REPLACE PROCEDURE F_GETMULTITABLELID(strTableName IN VARCHAR2 DEFAULT NULL,
num IN VARCHAR2 DEFAULT NULL,
strstartID IN OUT VARCHAR2,
strendID IN OUT VARCHAR2) AS
StoO_rowcnt INTEGER;
strIndex NUMBER(9, 0);
BEGIN
NULL;
BEGIN
StoO_rowcnt := 0;
UPDATE SS_TablesID T
SET t.CurrentIDindex = t.CurrentIDindex + 1
WHERE TableName = strTableName RETURNING CurrentIDindex INTO strIndex;
StoO_rowcnt := SQL%ROWCOUNT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
IF StoO_rowcnt = 0 THEN
BEGIN
strIndex := 1;
BEGIN
INSERT INTO SS_TablesID
(TableName, CurrentIDindex)
VALUES
(strTableName, strIndex);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
END;
END IF;
strstartID := CAST(strIndex as varchar2);
/*取下面几个ID*/
BEGIN
UPDATE SS_TablesID
SET CurrentIDindex = CurrentIDindex +
(CAST(num AS NUMBER(9, 0)) - 1)
WHERE
TableName = F_GETMULTITABLELID.strTableName RETURNING
CurrentIDindex INTO strIndex;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
F_GETMULTITABLELID.strendID := CAST(F_GETMULTITABLELID.strIndex AS
VARCHAR2);
end F_GETMULTITABLELID;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。