Oracle pl/sql函数中的多个查询
我在pl/sql中有一个函数,其中我希望有三个查询,每个查询将设置一个变量(exist、decured和dates),返回的字符串取决于这些变量的组合Oracle pl/sql函数中的多个查询,oracle,plsql,Oracle,Plsql,我在pl/sql中有一个函数,其中我希望有三个查询,每个查询将设置一个变量(exist、decured和dates),返回的字符串取决于这些变量的组合 CREATE OR REPLACE FUNCTION get_cat_status (systemId IN NUMBER) RETURN VARCHAR2 AS status VARCHAR2 (2000) := 'Null'; exist NUMBER := 1; withdrawn
CREATE OR REPLACE FUNCTION get_cat_status (systemId IN NUMBER)
RETURN VARCHAR2
AS
status VARCHAR2 (2000) := 'Null';
exist NUMBER := 1;
withdrawn NUMBER := 0;
dates NUMBER := 0;
BEGIN
BEGIN
SELECT DISTINCT result
INTO exist
FROM SEEDTEST_RESULT
WHERE SEEDTEST_RESULT.RESULT = '1'
AND SEEDTEST_RESULT.TEST_TYPE = 'C'
AND SEEDTEST_RESULT.SLRN_ID = systemId;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
exist := 1;
END;
BEGIN
SELECT 1
INTO withdrawn
FROM CROP
WHERE CROP.SYSTEM_ID = systemId
AND NVL ( (CROP.ORIG_AREA - NVL (CROP.ADD_AREA, 0)), 0) = 0;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
withdrawn := 1;
END;
BEGIN
SELECT DATE_3_PROC --replaced with 1 and works
INTO dates
FROM CROP
WHERE CROP.SYSTEM_ID = systemId;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
dates := 1;
END;
IF (dates = 0 AND withdrawn = 1)
THEN
status := 'NO RESULT';
END IF;
IF (dates = 1 AND exist = 1)
THEN
status := 'REJECTED';
END IF;
RETURN (status);
END get_cat_status;
我曾尝试添加它们,但到目前为止都不起作用。有人能帮忙吗?这个函数正在做我想要的事情。在此之前,第三个查询不起作用,因为DATE_3_PROC是一个日期,我将其分配给dates,一个数字。在最初的Access应用程序中,它只检查每个查询是否没有返回任何记录,并更新相应的变量。在Oracle中,我将它与混合到了,后者已经将值赋给了变量,但没有意义。现在,当查询不返回任何记录时,我分配0而不是1,当有记录时,它将是1
Create or replace FUNCTION get_cat_status(systemId IN Number)
RETURN VARCHAR2
AS
status VARCHAR2(2000) := ' ';
exist NUMBER;
withdrawn NUMBER;
dates NUMBER;
BEGIN
BEGIN
SELECT DISTINCT 1 INTO exist
FROM SEEDTEST_RESULT
WHERE SEEDTEST_RESULT.RESULT = '1'
AND SEEDTEST_RESULT.TEST_TYPE = 'C'
AND SEEDTEST_RESULT.SLRN_ID = systemId;
EXCEPTION
WHEN NO_DATA_FOUND THEN
exist := 0;
END;
BEGIN
SELECT 1 INTO withdrawn
FROM CROP
WHERE CROP.SYSTEM_ID = systemId
AND NVL((CROP.ORIG_AREA - NVL(CROP.ADD_AREA, 0)), 0) = 0;
EXCEPTION
WHEN NO_DATA_FOUND THEN
withdrawn := 0;
END;
BEGIN
SELECT 1 INTO dates
FROM CROP
WHERE CROP.SYSTEM_ID = systemId;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dates := 0;
END;
IF (dates = 1 and withdrawn = 0) THEN
status := 'NO RESULT';
END IF;
IF (dates = 0 and exist = 0) THEN
status := 'REJECTED';
END IF;
RETURN(status);
END get_cat_status;
什么工作不正常?您不需要没有任何聚合函数的
分组依据。正在编译时会出现警告。我添加了第二个查询,它也在工作,但仍在与第三个查询进行斗争。我不熟悉PL/sqlthanker@SudiptaMondal中的调试,我以前有过一个计数。我删除了它们。@Nils您需要发布最新的代码和错误消息,您可以编写显示错误代码>编译包后,它将向您提供错误消息。