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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

参考技术A 你最后没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;

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

sqlserver 存储过程中变量赋值

sqlserver 存储过程中变量赋值 declare @cc int set @cc=(select count(1) from tablename) 或 select @cc=count(1) from tablename
在下面是用的时候都没有值,例如:
if @cc = 0
这个判断失效,但是当在判断前面加select @cc的时候就可以,不知道为什么,请帮助回答一下,多谢

参考技术A 你没有把问题写多明白啊不过看你得描述,应该是在 as后面声明的局部变量。按你得用法绝对是没有问题的,我试过没问题啊。你说的“if @cc = 0这个判断失效”是什么意思呢?是表里面有记录自然@cc!=0,,“在判断前面加select @cc的时候就可以”又是什么意思?执行存储过程的话,if只是判定条件只有select才会打印出数据~~~~~~~ 参考技术B 先用select count(1) from tablename,判断是否有满足条件的记录,sql对null的判断不太友好 参考技术C 能不能给出完整代码? 参考技术D 当查询的结果没有记录时,@cc的值可能为null
需要看你具体的代码是什么
第5个回答  2011-08-10 654645

以上是关于oracle 存储过程中查询结果无法赋值到变量,请指教的主要内容,如果未能解决你的问题,请参考以下文章

Mysql将存储过程执行后的值赋值给变量

Oracle 如何给存储过程赋值

sqlserver 存储过程中变量赋值

大家帮忙看看Oracle存储过程怎样给变量赋值

oracle 中怎样把查询结果当做已知量或赋值给某个变量?

oracle 存储过程 空值赋值问题