【发布时间】:2020-09-16 12:46:36
【问题描述】:
我正在尝试这样做:
声明变量名 varchar2(50)
Begin VariableName := (select column from table where rownum = 1);
有什么问题? 谢谢各位!
【问题讨论】:
标签: plsql
我正在尝试这样做:
声明变量名 varchar2(50)
Begin VariableName := (select column from table where rownum = 1);
有什么问题? 谢谢各位!
【问题讨论】:
标签: plsql
您需要使用select into。
像这样:
select column into VariableName from table where rownum = 1;
如果您有多个变量,您可以通过使用, 分隔它们来实现:
declare
a number;
b date;
c varchar2(100);
begin
select ca, sysdate, cc
into a, b, c
from your_table
where rownum = 1;
end;
【讨论】:
在声明语句后加分号 声明变量名 varchar2(50);
【讨论】:
为此,您可以更好地使用SELECT INTO,或者甚至更好地使用带有记录的游标。 SELECT INTO 将起作用,但如果 SELECT 语句未返回任何记录,您将收到 ORA-01403: no data found 错误。如果您有更多代码,这很烦人。
例如:
DECLARE
CURSOR cTable IS
SELECT ColumnA FROM Table WHERE RowNum = 1;
rTable cTable%ROWTYPE;
BEGIN
OPEN cTable;
FETCH cTable INTO rTable;
CLOSE cTable;
DBMS_OUTPUT.PUT_LINE(rTable.ColumnA);
END;
/
【讨论】: