当前位置: 代码迷 >> Oracle开发 >> ORACLE变量定义有关问题
  详细解决方案

ORACLE变量定义有关问题

热度:91   发布时间:2016-04-24 06:30:48.0
ORACLE变量定义问题
DECLARE
  SN VARCHAR2(50);
  SN1 VARCHAR2(50);
  SN2 VARCHAR2(50);
  SET SN = (SELECT SER_NO FROM UPLOAD WHERE FILE_NAME='大堂经理.wav');
  SET SN1=(SELECT SER_NO FROM UPLOAD WHERE FILE_NAME='大堂经理(粤).wav');
  SET SN2= SN+'@'+SN1;
BEGIN
  Insert into IQS.CP_POSITION (PID,POSTIONNAME,AUDIOFILEID,CREATOR,UPDATETIME,CREATETIME,AUDIOPLAYLANGUAGE,AUDIONAME) values ('4d2ca1e7-94c7-4b94-87de-9a425639307c','大堂经理',SN2,'ADMIN',sysdate,sysdate,SN,'大堂经理.wav@大堂经理(粤).wav');

END;


这样写执行会一直报错,之前没写过。求改正
报错如下:
在行 2 上开始执行命令时出错:
DECLARE
  SN VARCHAR2(50);
  SN1 VARCHAR2(50);
  SN2 VARCHAR2(50);
  SET SN=(SELECT SER_NO FROM UPLOAD WHERE FILE_NAME='大堂经理.wav');
  SET SN1=(SELECT SER_NO FROM UPLOAD WHERE FILE_NAME='大堂经理(粤).wav');
  SET SN2= SN+'@'+SN1;
BEGIN
  Insert into IQS.CP_POSITION (PID,POSTIONNAME,AUDIOFILEID,CREATOR,UPDATETIME,CREATETIME,AUDIOPLAYLANGUAGE,AUDIONAME) values ('4d2ca1e7-94c7-4b94-87de-9a425639307c','大堂经理',SN2,'ADMIN',sysdate,sysdate,SN,'大堂经理.wav@大堂经理(粤).wav');

END;
错误报告:
ORA-06550: 第 5 行, 第 9 列: 
PLS-00103: 出现符号 "="在需要下列之一时:
 := . ( @ % ; not
   null range default character
ORA-06550: 第 5 行, 第 72 列: 
PLS-00103: 出现符号 ";"在需要下列之一时:
 ) , and or
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
------解决思路----------------------
引用:
Quote: 引用:

哪里来的SET...

  SET SN=(SELECT SER_NO FROM UPLOAD WHERE FILE_NAME='大堂经理.wav');
  SET SN1=(SELECT SER_NO FROM UPLOAD WHERE FILE_NAME='大堂经理(粤).wav');
  SET SN2= SN+'@'+SN1;


正确的变量赋值

 SN:=(SELECT SER_NO FROM UPLOAD WHERE FILE_NAME='大堂经理.wav');
  SN1:=(SELECT SER_NO FROM UPLOAD WHERE FILE_NAME='大堂经理(粤).wav');
  SN2:= SN
------解决思路----------------------
'@'
------解决思路----------------------
SN1;





SELECT SER_NO INTO SN FROM UPLOAD WHERE FILE_NAME='大堂经理.wav';
SELECT SER_NO INTO SN1 FROM UPLOAD WHERE FILE_NAME='大堂经理(粤).wav';
SN2:= SN+'@'+SN1;

select into方式赋值 前面。楼上说的不错,慢慢习惯Oracle的方式。
  相关解决方案