SET SERVEROUTPUT ON
DECLARE VARSEC_RIGHT_SID NVARCHAR2(100);
BEGIN
SELECT SEC_RIGHT_SID INTO VARSEC_RIGHT_SID FROM USER_RIGHT
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('存在:' || VARSEC_RIGHT_SID);
END IF;
END;[當查詢沒數據時候就報錯,怎麼寫啊!剛接觸Oracle。謝謝,指點!
解决方案 »
- 请给看看,哪里错了?在线等.....
- Oracle Developer Tools for Visual Studio .NET
- 请教ORACLE的lsnrctl启动报TNS closed的错误问题。
- (各路高手请进,搞了两天没有搞出来)一个拼装SQL语句的问题
- exp/imp 导入指定表空间
- 指标报表数据的深度求解: 部门参数信息,部门指标数据。这两类参数信息都是表里动态的
- select * from FND_FLEX_VALUES_TL where language=userenv('LANG')—userenv是什么?
- 运用Exp80.exe 提示数据库表找不到为何?
- oracle数据库非法关闭(NT直接停止服务)以后,重起报错不能连接?在线等
- 怎样获得oracle中的进程信息?
- 本人菜鸟,问几个关于oracle和pl/sql developer的问题
- 怎么进入oracle-test>提示符状态?
BEGIN
SELECT SEC_RIGHT_SID INTO VARSEC_RIGHT_SID FROM USER_RIGHT
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('存在:' || VARSEC_RIGHT_SID);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('没有数据');
END;
--變量聲明
VARSEC_RIGHT_SID NVARCHAR2 (100);
QVARSEC_RIGHT_SID NVARCHAR2 (100);
CURSOR CUR_MES_GRP IS
SELECT SEC_RIGHT_SID FROM MES_SEC_RIGHT ORDER BY SEC_RIGHT_SID DESC; --權限維護表
BEGIN
OPEN CUR_MES_GRP;
FETCH CUR_MES_GRP INTO VARSEC_RIGHT_SID;
WHILE CUR_MES_GRP%FOUND
LOOP
SELECT SEC_RIGHT_SID INTO QVARSEC_RIGHT_SID FROM MES_SEC_GRP WHERE SEC_RIGHT_SID=VARSEC_RIGHT_SID
里面查詢遊標沒讀取數據也會報錯。用上面方法不能解決問題。
循环至少要包在FETCH语句的外面啊。一般都使用光标FOR循环了。
参考代码如下: