I USE DBMS_SQL SYSTEM PACKAGE FOR PARSE SQL STATEMENT, BUT RETURN A NULL VALUEL
FOLLOWING IS THE CODE:
-----
DECLARE
V_CURSOR INT;
V_RECNT INT;
V_RESULT TBL1.FIELD1%TYPE;
V_SQLSTM VARCHAR2(100):= 'SELECT FIELD1 FROM TBL1'||
' WHERE FIELD2=:AA';
BEGIN
DBMS_SQL.PARSE(V_CURSOR,V_SQLSTM,DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(V_CURSOR,':AA',44);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR,1,V_RESULT);
V_RECNT:=DBMS_SQL.EXECUTE(V_CURSOR);
DBMS_SQL.COLUMN_VALUE(V_CURSOR,1,V_RESULT);
END;
FOLLOWING IS THE CODE:
-----
DECLARE
V_CURSOR INT;
V_RECNT INT;
V_RESULT TBL1.FIELD1%TYPE;
V_SQLSTM VARCHAR2(100):= 'SELECT FIELD1 FROM TBL1'||
' WHERE FIELD2=:AA';
BEGIN
DBMS_SQL.PARSE(V_CURSOR,V_SQLSTM,DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(V_CURSOR,':AA',44);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR,1,V_RESULT);
V_RECNT:=DBMS_SQL.EXECUTE(V_CURSOR);
DBMS_SQL.COLUMN_VALUE(V_CURSOR,1,V_RESULT);
END;
解决方案 »
- 想在oracle数据库里面用动态的sql向表中插入10000条数据,但是老报错,望指点下!
- 如何把远程服务器Oracle数据库导入到本机Oracle数据库中?
- oracle10中如何导入数据库
- 存储过程中出错的时候有类似SQLSERVER里的ERROR CODE吗?
- oracle9I服务器端怎么样才能连接上另一个电脑上的数据库?
- 求一SQL简单语句,立即结帖。
- 请教怎么使得表名能>40个字符
- 调用一个ORACLE的存储过程
- pro c相关的一些简单问题
- 参照完整性的问题
- 存储过程调用存储过程,怎么调,我急┄
- 我在XP下装了个Oracle 9.0,但系统一启动就自动启动了Oracle,想让系统启动时,不启动Oracle,怎么办?
8i可以使用execute immediate ... 参考:
create or replace procedure DynamicQuery(p_StrSQL in string)
is
v_CursorID INTEGER;
v_SelectStmt VARCHAR2(500);
v_Dummy INTEGER;
v_ReturnRow INTEGER;
v_MailID VARCHAR2(20);
begin --打开游标
v_CursorID:=DBMS_SQL.OPEN_CURSOR; --将传入的SQL文付给已经定义的变量
v_SelectStmt:=p_StrSQL; --利用DBMS_SQL包的内置函数解析SQL文
DBMS_SQL.PARSE(v_CursorID,v_SelectStmt,DBMS_SQL.V7); --定义需要输出的变量
DBMS_SQL.DEFINE_COLUMN(v_CursorID,1,v_MailID,20); --执行SQL文,如果是DML语句,则返回处理的行数
v_Dummy:=DBMS_SQL.EXECUTE(v_CursorID); loop --将匹配查询的行提取到缓冲区,每次一行,返回取到的行数,=0表示不再取到值
v_ReturnRow:=DBMS_SQL.FETCH_ROWS(v_CursorID);
if v_ReturnRow=0 then
exit;
end if; --将缓冲区中的数据提取到PL/SQL变量中
DBMS_SQL.COLUMN_VALUE(v_CursorID,1,v_MailID);
end loop; --关闭游标
DBMS_SQL.CLOSE_CURSOR(v_CursorID); EXCEPTION
when others then
DBMS_SQL.CLOSE_CURSOR(v_CursorID);
raise; end DynamicQuery;