Oracle11g 如何在select的何处使用declare变量?
如何在select的何处使用declare变量Oracle11g 如何在select的何处使用declare变量?,oracle11g,Oracle11g,如何在select的何处使用declare变量 CREATE TABLE student ( id smallint PRIMARY KEY, first_name VARCHAR(80) NOT NULL, last_name VARCHAR(80) NOT NULL); insert into student VALUES(10,'AA','A01'); insert into student VALUES(30,'BB','B01'); --MSSQL OK declare
CREATE TABLE student (
id smallint PRIMARY KEY,
first_name VARCHAR(80) NOT NULL,
last_name VARCHAR(80) NOT NULL);
insert into student VALUES(10,'AA','A01');
insert into student VALUES(30,'BB','B01');
--MSSQL OK
declare @v_first varchar(10);
set @v_first='AA';
select * from student where first_name=@v_first;
--甲骨文错误
declare v_first varchar2(10);
BEGIN
v_first :='AA';
select * from student where first_name= v_first;
END;
--=>消息
ORA-06550:第4行第3列:
PLS-00428:在此 选择敘述句中預期會出現一個 进入子句
655000000-行%s,列%s:\n%s
*原因:通常是PL/SQL编译错误。
*操作:您为MSSQL提供的示例是一个不同的表,但假设用户列表中的部门ID也是一个数字。。。SQL将自动转换字符串以进行比较 您需要将id转换为一个数字。在将varchar变量与数字进行比较之前声明varchar变量有什么原因吗
declare v_id varchar2(2);
BEGIN
v_id :='30';
select * from student where id= TO_NUMBER(v_id);
END;
或者更改声明和赋值
declare v_id NUMBER;
BEGIN
v_id :=30;
select * from student where id= v_id;
END;
基本上,我在下面的评论中添加的链接是这样说的。。来自用户tvm。。在PL/SQL中不能使用SELECT WITH INTO子句。SELECT的输出必须存储在某个位置。表、变量或记录。请参阅下面的示例,了解如何将SELECT语句的结果存储到记录中
DECLARE
v_id number;
v_result Student%ROWTYPE;
BEGIN
v_id := 30;
SELECT * INTO v_result
FROM Student
WHERE id = v_id;
END;
然后你需要对v_结果做点什么。。。显示的另一个选项是直接调用SQL—这取决于您如何调用和使用数据。Whew—我已经有一段时间没有使用Oracle了,所以我必须查看。。。我找到了其他问题和答案供您查看-因为我不知道您是如何尝试在oracle中调用此查询的,也不知道您想对结果做什么,它解释了为什么这对您不起作用,以及您可以如何使用它。亲爱的:谢谢你的帮助。我使用MSSQL,当我尝试创建一个proc时,我会一步一步地尝试,所以我想看看where xx=变量的结果。所以在Oracle中,我必须在v_结果中使用,但是如何直接显示v_结果呢?我必须开始学习racle,所以他们有很多我无法发现的地方。Thx和学生%ROWTYPE只能调整1个结果?我发现,我必须使用DBMS|u OUTPUT.put_linev|u result.first|u name | v|u result.last|u name;要逐个获取列,我可以使用select获取它们吗?您可以将它们选择到单独的变量中,因此从学生中选择first_name、last_name到v_first_name、v_last_name。。。等你看过我在第一条评论中提供的链接了吗?回到另一个问题和伟大的答案?通读评论和答案-给你一些方法和链接