Pl/sql Error: Identifier 'Record' must be declared
Pl/sql Error: Identifier 'Record' must be declared
我是 pl/sql 的新手。我需要根据给定的行 ID 检索行。为此,我写了一个 returns 行的函数。这是我写的函数。
CREATE OR REPLACE FUNCTION CHECKROW(ROW_ID_ IN VARCHAR2)
RETURN TBL_SPT%ROWTYPE
IS
VAR_TEMP_ TBL_SPT%ROWTYPE;
CURSOR GET_ROW IS
SELECT *
FROM TBL_SPT
WHERE ROWID = ROW_ID_;
BEGIN
OPEN GET_ROW;
FETCH GET_ROW
INTO VAR_TEMP_;
--Here I wrote the print statement to get the id only.
DBMS_OUTPUT.PUT_LINE(VAR_TEMP_.s_id);
RETURN VAR_TEMP_;
CLOSE GET_ROW;
END CHECKROW;
但是当我测试这个函数时,它给出了下面的错误。我的第一个问题是为什么这个函数会给出这个错误?我在这里使用了光标。这是错的吗?我应该使用记录吗?
另一个问题是,如果我想打印记录,是否应该对所有字段使用 'VAR_TEMP_.id' 类型?还有其他方法吗?
这是我的 table 定义。
Name Type
----------- ------
S_ID NUMBER
P_ID NUMBER
PR_ID NUMBER
QUANTITY NUMBER
ROW_VERSION DATE
这里是测试时产生的调用函数。 row_id_
是一个字符串。
declare
-- Non-scalar parameters require additional processing
result record;
begin
-- Call the function
result := checkrow(row_id_ => :row_id_);
end;
错误来自您调用函数的匿名块,而不是函数本身;它并没有真正进行调用。
声明:
result record;
应该是:
result TBL_SPT%ROWTYPE;
以匹配函数的 return 类型。看起来样板代码使用了一个通用的 'record',它希望您定义或替换它。正如它在评论中所说,“非标量参数需要额外处理”。
这并不意味着您的功能没有问题,如评论中所述;但这些不会导致此错误。
我是 pl/sql 的新手。我需要根据给定的行 ID 检索行。为此,我写了一个 returns 行的函数。这是我写的函数。
CREATE OR REPLACE FUNCTION CHECKROW(ROW_ID_ IN VARCHAR2)
RETURN TBL_SPT%ROWTYPE
IS
VAR_TEMP_ TBL_SPT%ROWTYPE;
CURSOR GET_ROW IS
SELECT *
FROM TBL_SPT
WHERE ROWID = ROW_ID_;
BEGIN
OPEN GET_ROW;
FETCH GET_ROW
INTO VAR_TEMP_;
--Here I wrote the print statement to get the id only.
DBMS_OUTPUT.PUT_LINE(VAR_TEMP_.s_id);
RETURN VAR_TEMP_;
CLOSE GET_ROW;
END CHECKROW;
但是当我测试这个函数时,它给出了下面的错误。我的第一个问题是为什么这个函数会给出这个错误?我在这里使用了光标。这是错的吗?我应该使用记录吗? 另一个问题是,如果我想打印记录,是否应该对所有字段使用 'VAR_TEMP_.id' 类型?还有其他方法吗?
这是我的 table 定义。
Name Type
----------- ------
S_ID NUMBER
P_ID NUMBER
PR_ID NUMBER
QUANTITY NUMBER
ROW_VERSION DATE
这里是测试时产生的调用函数。 row_id_
是一个字符串。
declare
-- Non-scalar parameters require additional processing
result record;
begin
-- Call the function
result := checkrow(row_id_ => :row_id_);
end;
错误来自您调用函数的匿名块,而不是函数本身;它并没有真正进行调用。
声明:
result record;
应该是:
result TBL_SPT%ROWTYPE;
以匹配函数的 return 类型。看起来样板代码使用了一个通用的 'record',它希望您定义或替换它。正如它在评论中所说,“非标量参数需要额外处理”。
这并不意味着您的功能没有问题,如评论中所述;但这些不会导致此错误。