淘先锋技术网

首页 1 2 3 4 5 6 7

没有写博客的习惯,今天碰到个问题困扰了我好久,网上搜了很多,但都不是自己遇到问题的答案。很是心烦,所以决定开始记录自己遇到的问题,方便以后自己寻找同时方便同行们解决问题,菜鸟萌新,请多关照。
今天写了一个sql,运行时报错“ORA-00923: FROM keyword not found where expected”,网上答案有说select后列之间没有添加“,”,也有说列别名没有添加“双引号”的,但试过后发现并不能解决我的问题,以下是问题部分代码。

BEGIN
				SELECT
				wpa.we_channel_id  INTO channelid,  
				wpa.we_class_id  INTO classid , 
				wc.TYPE  INTO typeid ,
			FROM
				wechat_public_account wpa
				LEFT JOIN we_class wc ON wpa.we_class_id = wc.id 
			WHERE
				wpa.WE_ACCOUNT_IDENTIFY = wechatid 
				AND wpa.we_channel_id IS NOT NULL 
				AND wpa.we_class_id IS NOT NULL;
			EXCEPTION 
				WHEN no_data_found THEN
				classid := - 1;
			channelid := - 1;
			
		END;

以下是错误信息

> ORA-06550: line 37, column 21:
PL/SQL: ORA-00923: FROM keyword not found where expected
ORA-06550: line 35, column 5:
PL/SQL: SQL Statement ignored

> 时间: 0.106s

经过一点一点测试,发现是一处语法错误,into赋值问题。

在使用into给查询语句赋值时,是一次性into,例:select a,b,c into d,e,f from…而不是分别进行into,例: select a into d ,b into e…

所以最后代码修改为:

		BEGIN
				SELECT
				wpa.we_channel_id ,  
				wpa.we_class_id , 
				wc.TYPE INTO channelid ,classid ,typeid 
			FROM
				wechat_public_account wpa
				LEFT JOIN we_class wc ON wpa.we_class_id = wc.id 
			WHERE
				wpa.WE_ACCOUNT_IDENTIFY = wechatid 
				AND wpa.we_channel_id IS NOT NULL 
				AND wpa.we_class_id IS NOT NULL;
			EXCEPTION 
				WHEN no_data_found THEN
				classid := - 1;
			channelid := - 1;
			
		END;