精华内容
下载资源
问答
  • oracle存储过程变量赋值
    2021-05-01 10:55:10

    oracle变量赋值有两种一种是直接:=,两个字符串的连接不可以用 '+' ,要用 '||'

    还有就是select into

    下面是我写的例子:

    create or replace procedure DAILYSTATIC is

    MAX_TMP   int;

    AVG_TMP   int;

    HIGH_TIME date;

    TELEPHONE varchar2(20);

    CONTENT   varchar2(150);

    SMS_TMP   varchar2(40);

    SMS_TIME  varchar2(40);

    SMS_AVG   varchar2(40);

    SMS_CONTENT            varchar(200);

    begin

    --获取要发送的数据

    select max( TEMP ) into MAX_TMP from NEP_NUT_TEMP_LOG where trunc( time, 'dd' ) = trunc( sysdate, 'dd' );

    select TIME into HIGH_TIME from NEP_NUT_TEMP_LOG where TEMP = MAX_TMP  and trunc( time, 'dd' ) = trunc( sysdate,'dd' );

    select avg( TEMP ) into AVG_TMP from NEP_NUT_TEMP_LOG where trunc( time, 'dd' ) = trunc( sysdate, 'dd' );

    --获取联系人相关信息

    select tel into TELEPHONE from NEP_SYS_ALARM2LINKMAN where alarm_level = 3;

    SMS_TMP := '今天的最高温度为' || MAX_TMP;

    SMS_TIME := '出现时间为' || HIGH_TIME;

    SMS_AVG := '平均温度为' || AVG_TMP;

    SMS_CONTENT := SMS_TMP || ',' || SMS_TIME || ',' || SMS_AVG;

    --放进NEP_SYS_SENDSMS表中

    insert into NEP_SYS_SENDSMS( MOBILE, CONTENT, SMS_WRITE_TIME )

    values( TELEPHONE,SMS_CONTENT, sysdate );

    end DAILYSTATIC;

    更多相关内容
  • create or replace procedure sp_timediff(fromdate varchar,todate varchar,pltcode varchar) as plantime_jia number(12,2);... 从第一句赋值语句开始就有问题了 [本帖最后由 vhdl74160 于 2008-6-13 10:30 编辑]

    create or replace procedure sp_timediff(fromdate varchar,todate varchar,pltcode varchar) as

    plantime_jia number(12,2);

    plantime_yi number(12,2);

    plantime_bing number(12,2);

    plantime_ding number(12,2);

    actualtime_jia number(12,2);

    actualtime_yi number(12,2);

    actualtime_bing number(12,2);

    actualtime_ding number(12,2);

    begin

    plantime_jia:=(select nvl(sum(nvl(plan_work_time,0)),0) from "pro" where product_date between fromdate and todate and jizu=pltcode and group_no=1 and shift_no in(1,2,3));

    plantime_yi:=(select nvl(sum(nvl(plan_work_time,0)),0) from "pro" where product_date between fromdate and todate and jizu=pltcode and group_no=2 and shift_no in(1,2,3));

    plantime_bing:=(select nvl(sum(nvl(plan_work_time,0)),0) from "pro" where product_date between fromdate and todate and jizu=pltcode and group_no=3 and shift_no in(1,2,3));

    plantime_ding:=(select nvl(sum(nvl(plan_work_time,0)),0) from "pro" where product_date between fromdate and

    insert into timediff(xiangmu,jia,yi,bing,ding,flag)values('计划作业时间',nvl(plantime_jia,0),nvl(plantime_yi,0),nvl(plantime_bing,0),nvl(plantime_ding,0),1);

    insert into timediff(xiangmu,jia,yi,bing,ding,flag)values('实际作业时间',nvl(actualtime_jia,0),nvl(actualtime_yi,0),nvl(actualtime_bing,0),nvl(actualtime_ding,0),2);

    insert into timediff(xiangmu,jia,yi,bing,ding,flag)values('差异',nvl(actualtime_jia,0)-nvl(plantime_jia,0),nvl(actualtime_yi,0)-nvl(plantime_yi,0),nvl(actualtime_bing,0)-nvl(plantime_bing,0),nvl(actualtime_ding,0)-nvl(plantime_ding,0),3);

    end;

    从第一句赋值语句开始就有问题了

    [本帖最后由 vhdl74160 于 2008-6-13 10:30 编辑]

    展开全文
  • Oracle存储过程变量赋值的方法

    万次阅读 2016-07-04 15:42:26
    截止到目前我发现有三种方法可以在存储过程中给变量进行赋值: 1、直接法 :=  如:v_flag := 0; 2、select into  如:假设变量名为v_flag,select count(*) into v_flag from students; 3、execute ...

    截止到目前我发现有三种方法可以在存储过程中给变量进行赋值:

    1、直接法     :=    

       如:v_flag := 0;

    2、select into

       如:假设变量名为v_flag,select count(*) into v_flag from students;

    3、execute immediate 变量名(一般是sql的select语句) into 变量名

       如:

       v_sqlfalg   := 'select count(*) from user_tables where table_name='''||v_tablename || '''';
       execute immediate v_sqlfalg into v_flag;

       其中,v_tablename也是变量

    当然2和3实质是一样的。只不过3中的select语句是根据变量生成的。

    在存储过程中,是不能直接写select语句的。

    展开全文
  • 一.首先变量的声明有3中方式 ...注:存储过程中声明变量必须在begin之前 并且声明字符串时必须指定大小,不然会报错 2.使用%TYPE声明 ①格式:变量名 表名.字段名%TYPE ②含义:该变量的数据类型与指定...

    一.首先变量的声明有3中方式

    1.按数据类型进行声明

    ①直接声明数据类型

    ②格式:变量名  数据类型(大小)

    V_TEST varchar2(20);
    V_NUM  number;

     注:存储过程中声明变量必须在begin之前

           并且声明字符串时必须指定大小,不然会报错

    2.使用%TYPE声明

    ①格式:变量名  表名.字段名%TYPE

    ②含义:该变量的数据类型与指定表的指定字段的数据类型一致

    V_NAME DFGZ_PKG.NAME%TYPE;

    3.使用%ROWTYPE声明

    ①变量名  表名%ROWTYPE

    ②含义:该变量的数据类型与指定表的指定行记录(所有字段)的数据类型一致

    --V_TOTALL_ROW 表的整行数据
    V_TYPE_TOTALL_ROW  V_TOTALL_ROW%ROWTYPE;

    总结:

           ①在Oracle的存储过程中变量的声明不区分大小写

           ②变量的使用必须声明

    二.变量的赋值(3种方式)

    1.直接赋值法

    ①使用 “:=”

    ②使用条件:适用于声明变量的前两种方式

    V_COLUMN :='100';

    ③变量后面不能直接跟sql语句,负责sql不会执行,如

    --错误做法
    V_LOGO :=SELECT REVC_SIGN INTO V_LOGO FROM DFGZ_PKG;
    
    --正确做法
    V_LOGO :=‘SELECT REVC_SIGN INTO V_LOGO FROM DFGZ_PKG’;

    ④变量的声明和赋值可以一块进行

    create....
    
    --开始给变量赋值
    V_sql :='select reve_state from dfgz_pkg where fileNum=5';
    
    begin
    
    /*
      具体业务部分
     */
    
    end;

    2.select 表字段 into 变量 from  表

    方式一:

    ①查询指定表的所有字段

    ②适用于声明变量的前2种方式可以使用

    --根据代发工资个人id查询对应的父机构(代发单位)序列
    SELECT REVC_SIGN INTO V_LOGO FROM DFGZ_PKG 
     
     WHERE REVCID=(SELECT PARENTID FROM DFGZ_PKG WHERE REVEID = V_REVCID);

    方式二:

    ①查询指定表的所有字段

    ②适用于声明变量的第3种方式

    --将id=2203的DFGZ_PKGMX表数据赋值给变量V_COLUMN_SID;
    
    SELECT * INTO  V_COLUMN_SID FROM DFGZ_PKGMX T WHERE t.id=2203

    注:

    ①查询结果只能返回一条记录

    ②查询的表字段必须是该表的所有字段

    --错误示例一:查询的是所有记录
    
    select * into V_COLUMN_SID  from DFGZ_PKGMX T;
    --错误示例二:查询的是该表的多个字段
    
    select  t.id,t.name into V_COLUMN_SID  from dfgz_pkgmx t;

    3.execute immediate sql语句字符串 into 变量

    declare /*存储过程,不需要声明*/
    
       v_sql varchar2(200);
    
       v_revc_row varchar2(200);
    
    begin
    
        v_sql:='select v_revc_row  from dfgz_send where revc_id=22150';
    
        --v_revc_row 赋值
    
        execute immediate v_sql into v_v_revc_row ;
    
         --打印结果(Oracle自带日志打印功能)
    
         DBMS_OUTPUT.put_line(v_revc_row  );
    
    end;

    三.变量的调用

    1.通常来说,变量只有这3种使用场景:赋值、逻辑判断、算术运算

    2.平常不能用作查询列

    --错误调用
    
    select v_reve_sign from dual;

    3.使用%ROWTYPE声明的变量如何调用?

      利用“变量名.表字段”的方式可以取到该表中指定行(返回行)的指定列(任意列)所代表的数据。 

    --  v_revc_row  赋值
    
    select v_revc_row  from dfgz_send where revc_id=22150;
    
    -- 调用
    
    DBMS_OUTPUT.put_line(dfgz_send.id);

     

    展开全文
  • oracle 存储过程 变量的声明和赋值的3种方式 CreationTime--2018年8月31日16点00分 Author:Marydon 1.声明变量的3种方式  按照数据类型的声明方式进行区分  方式一:直接声明数据类型  格式:变量名 数据...
  • oracle存储过程中给变量赋值

    万次阅读 2016-08-15 10:31:22
    oracle变量赋值有两种一种是直接:=,两个字符串的连接不可以用 '+' ,要用 '||'   还有就是select into      下面是我写的例子:     create or replace procedure DAILYSTATIC is ...
  • 存储过程变量的声明和赋值
  • 如何动态执行存储过程或函数目前在Oracle数据库存储过程研发过程中,遇到需要从某张表中读取存储过程名并进行动态执行的情况,经查找资料,制作成DEMO,并通过测试,现共享下,以备其他同事遇到此种情况时参考。...
  • Oracle PL/SQL存储过程动态赋值问题createorreplaceprocedurerecord_inp_all(areacodevarchar2,beginTimevarchar2,endTimevarchar2)asv_areacodevarchar2(20);v_statvarchar2(20);v_areacode_countnumber;v_tablety....
  • 我尝试在我的Oracle数据库中创建一个过程,但无法实现将查询结果分配给我的变量.这是我正在尝试调试的内容:create or replacePROCEDURE PCD_COMBAT (identifier_perso NUMBER,identifier_advers NUMBER) ASATT_PERSO...
  • CREATE OR REPLACE PROCEDURE p_updete_gs is --仅供参考i_jdid varchar(32);...cursor cur is --游标 给查询赋值select c.jdid jdid, t.ryid rybh from t_zcj_rctj t,t_zj_jd c wheret.ryid=c.rybh and t...
  • Oracle存储过程的写法示例存储过程在java中调用的方法 示例 可复制: CREATE OR REPLACE PROCEDURE SAVE_PRO_PER_RATE (v_pstp_id in VARCHAR2,v_PPI_ID in VARCHAR2,v_PSTP_DEP_ID in VARCHAR2,v_COMBINE_ID in ...
  • //示例:选择最新的5条数据从20条开始 execute A_School_getNew 5,20 --存储过程 create procedure A_School_getNew @Size int, @StartIndex intASdeclare @recount intdeclare @Sql nvarchar(120)select @recount=...
  • 存储过程的参数中有三种参数类型 in out inout 执行有OUT参数才存过程 out参数必须得给一个变量 var v1 varchar2(100); exec htp_1.htp_p1('SMITH',:v1); 注意大小写 也可以给变量赋值 exec :v1:=1; 成功后返回...
  • 截止到目前我发现有三种方法可以在存储过程中给变量进行赋值:1、直接法 := 如:v_flag := 0;2、select into 如:假设变量名为v_flag,select count(*) into v_flag from students;3、execu...
  • 主要介绍了oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包等相关资料,需要的朋友可以参考下
  • 下面通过一个简单的存储过程代码段说明了该问题:CREATE OR REPLACE PROCEDURE load_error ISV_td1 test1.td1%TYPE;v_td1xh test1.td1xh%TYPE;v_gxsj timestamp ; -- 时间戳变量v_zhxgsj timestamp ;V_COUNT NUMBER ....
  • oracle存储过程----变量的介绍及使用(PL/SQL)

    万次阅读 多人点赞 2018-08-17 08:16:00
    oracle存储过程—-变量的介绍及使用   学习一门语言,既然学会了hello word 的输出,那就要关注下基础,首先要熟悉存储过程 中的变量类型。   关于存储过程变量有哪些 ,这样的问题,我在百度上搜索,却发现很...
  • --变量 cb_nr clob; BEGIN cb_nr := empty_clob(); --避免报:ORA-22275:指定了无效的LOB定位符 https://xbuba.com/questions/33742687 DBMS_LOB.CREATETEMPORARY(cb_nr,true); DBMS_LOB.APPEND(cb_nr, '&...
  • PL/SQL存储过程变量:declare 本文将对Oracle SQL中的变量进行分析探讨。 1. 脚本替换变量 替换变量可以放在SQL或PL/SQL语句中的任意位置,包含select值或字段,from表名,where字段或条件,orde
  • oracle 存储过程clob参数

    千次阅读 2020-12-23 15:32:26
    .Net处理Oracle中Clob类型字段总结最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下...
  • 本文简单记录下oracle数据库中,如何用plsql编程、以及存储过程的创建和使用。 相关的概念我就不列举了,大家不清楚的可以自行搜索,本篇主要列举实际的sql语法。 那plsql编程,大家可以使用windows的命令行,也...
  • Oracle存储过程基本语法文档——————————————————
  • PLSQL编程中常见的两大分类: 1.普通数据类型(char,vchar2,date,...变量赋值的方式有两种: 1,直接赋值语句 := 比如 v_name 2,语句赋值,使用 select ...into....赋值:(语法 select 值 into 变量) 实例...
  • 不能直接赋值,如下: t_planstartdate date := '2013-01-31 00:00:00'; 或者 select to_date('2013-01-31 00:00:00','yyyy-mm-dd 24hh:mi:ss') into t_pla...
  • 本篇文章主要介绍了Oracle存储过程和自定义函数详解,有需要的可以了解一下。
  • 声明数组变量 arr_val arr_val arr_type; • 二维数组 create or replace package myPackage is -- public type declarations type info is record( x varchar(20), y number ); type TestArray is table...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,829
精华内容 13,531
关键字:

oracle存储过程变量赋值