oracle 存储过程中查询结果无法赋值到变量,请指教

现有一表格local_xx,内有信息若干,要统计总数并且赋值到一个新的表格TEST中,代码如下,但新表格内没有数据,请问该如何修改?

CREATE OR REPLACE PROCEDURE test1
IS
tmpVar NUMBER;
strSQL VARCHAR2 (2000);
BEGIN

strSQL := 'drop table test';

EXECUTE IMMEDIATE strSQL;
strSQL := 'CREATE TABLE DDCXD.test(bh NUMBER)';

EXECUTE IMMEDIATE strSQL;

strSQL := 'select count(*) from local_xx';

EXECUTE IMMEDIATE strSQL into tmpVar ;

strSQL := 'insert into test values(' || tmpVar || ')';

EXECUTE IMMEDIATE strSQL;
END test1;

第1个回答  推荐于2016-05-16
你最后没commit

CREATE OR REPLACE PROCEDURE test1
IS
tmpVar NUMBER;
strSQL VARCHAR2 (2000);
BEGIN

strSQL := 'drop table test';

EXECUTE IMMEDIATE strSQL;
strSQL := 'CREATE TABLE DDCXD.test(bh NUMBER)';

EXECUTE IMMEDIATE strSQL;

strSQL := 'select count(*) from local_xx';

EXECUTE IMMEDIATE strSQL into tmpVar ;

strSQL := 'insert into test values(' || tmpVar || ')';

EXECUTE IMMEDIATE strSQL;
commit;
END test1;

这样就行了本回答被提问者采纳

oracle 存储过程中查询结果无法赋值到变量,请指教
你最后没commit CREATE OR REPLACE PROCEDURE test1 IS tmpVar NUMBER;strSQL VARCHAR2 (2000);BEGIN strSQL := 'drop table test';EXECUTE IMMEDIATE strSQL;strSQL := 'CREATE TABLE DDCXD.test(bh NUMBER)';EXECUTE IMMEDIATE strSQL;strSQL := 'select count(*) from local_xx';EXEC...

oracle的存储过程中为什么无法使用cte
oracle的存储过程,不允许直接在变量里赋值是因为oracle存储过程定义时并不会初始化变量的内存大小,只有使用的时候才会去分配。

oracle存储过程中如何对一个变量累加赋值 最好有个例子
1、首先打开oracle数据库,如下图所示。2、在Oracle中,对于函数的变量赋值,通常有三种方法来进行处理,直接赋值的方法,可以在声明变量的时候直接给变量进行赋值。3、其次,可以使用SELECT语句对变量进行赋值,主要是SELECT INTO语句,如下代码示例,将变量v_minvar赋予Min(t.sal)的值。4、最后就是动态...

oracle存储过程中声明变量并赋值的问题
回答:declare @m varchar(10) set @m='231231'

oracle 存储过程怎么执行不出结果啊??
变量插入aa 中,你没有其它显示它值的语句,因此,存储过程执行完后,无值输出确实没错。

oracle的包体中的存储过程中进行动态变量添加,死活insert不进去?请解 ...
如果运行之后无错误提示,就是insert成功了。你必须把所有查询的sql窗口关掉,再去看看有无数据。

plsql怎样把存储过程中查询的表的值赋给变量
select count(*) into x from a 在ORACLE里面直接这么写就可以了。

ORACLE存储过程varchar2变量赋值问题。
看到错误提示的地方,你应该是想执行一个动态SQL(在open语句中str是一个变量, 但是想把str用成SQL语句的in字句的部分),这明显是不对的(如果要用动态SQL,则是另外的写法)。可以open的查询语句,直接在查询语句中根据ORGCODE的值用case when构造查询的条件。例如:where (case when ORGCODE = 'SH' ...

Oracle存储过程中,查询结果有多行如何赋值
首先你是想要赋值给什么?是一个变量还是record。你要根据实际的情况出发,赋值给一个变量的时候你要考虑最大,最小,最新和最老的数据,看你这么取舍了。结果集的情况你可以用cursor或者array也可以。

oracle 存储过程 sql中in变量问题
如果就直接这样执行的话,select count(*) into v_count from t where type in(a);应该是有问题的.可以这样尝试一下:a varchar2(N);execute immediate 'select count(1) from t where type in('||a||')' into v_count ;还要注意传入的变量,引号别弄丢了...应该是可以的,我没有测试,...

相似回答