oracle存储过程变量
㈠ oracle存储过程变量传递
是不是跟sql server一样,不能用in 变量的形式,要直接写成 in (1,2,3)的形式才行
㈡ oracle存储过程中怎么输出变量的值
--代码示例与讲解(SQLServer下代码也是类似)
DECLARE@LSINT--定义一个变量@LS
SET@LS=8--让@LS等于8
SELECT@LSAStLS--选择变量@LS作为tLS(即输出)列出
㈢ 大家帮忙看看Oracle存储过程怎样给变量赋值
在pl/sql developer中,选中你要执行的存储过程,点击右键选择“测试”,在下面的参数中输入你的“123456789”,点击工具栏的“执行”,执行完毕后,如果有返回值就点击cursor,可以看到结果了。
㈣ oracle的存储过程,为什么不允许直接在变量里赋值
oracle的存储过程,不允许直接在变量里赋值是因为oracle存储过程定义时并不会初始化变量的内存大小,只有使用的时候才会去分配。
oracle的存储过程的基本语法:
一:存储过程分部解析:
1 CREATE OR REPLACE PROCEDURE 存储过程名
2 IS
3 BEGIN
4 NULL;
5 END;
行1:
CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;
行2:
IS关键词表明后面将跟随一个PL/SQL体。
行3:
BEGIN关键词表明PL/SQL体的开始。
行4:
NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;
行5:
END关键词表明PL/SQL体的结束
二:存储过程创建语法:
create or replace procere 存储过程名(param1 in type,param2 out type)
as
变量1 类型(值范围); --vs_msg VARCHAR2(4000);
变量2 类型(值范围);
Begin
//这里才可以给变量赋值
Select count(*) into 变量1 from 表A where列名=param1;
If (判断条件) then
Select 列名 into 变量2 from 表A where列名=param1;
Dbms_output。Put_line(‘打印信息’);
Elsif (判断条件) then
Dbms_output。Put_line(‘打印信息’);
Else
Raise 异常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;
㈤ oracle的存储过程里怎样调用动态变量
实现思路:
第一步:先定义一个字符串,这个字符串SQL是由动态变量和其他的sql语句成分拼接组成。
第二步:直接执行execute immediate SQL;
备注:以上方法是oracle提供的动态执行方法语句,直接使用就可以。
VAR_DYNAMIC_SQL:='INSERTINTORP_COMFIRMED_EVENT_DETAIL(
EVENT_ID,--ID
TRANS_TIME,--交易时间
TRANS_TYPE,--交易类型
TRANS_PROVINCE,--开户省份
CCE_CSTNO,--客户号
CCE_CERTTYPE,--证件类型
CCE_CERTNO,--证件号
CCE_AMT,--交易金额
CCE_RISK_SCORE,--不处理的风险分值
CCE_PAYEE_ACC,--付款人账号
CCE_PAYEE_NAME,--付款人姓名
CCE_REC_NODE,--收款人开户行
CCE_REC_ACC,--收款人账号
CCE_REC_NAME,--收款人姓名
RULE_NAME,--规则名称
CCE_RULE_NOTE,--规则描述
SCORE_RANGE--处理后的风险分值
)select
EVENT_ID,
SYS_CREATION_DATE,
GET_NAME_BY_CODE(GET_TOTAL_EVENT_TYPE(T1.EVENT_TYPE,T1.USER_DEFINED_EVENT_TYPE),''eventType'')ASTRANS_TYPE,
--get_province(IP_COUNTRY,IP_CITY)ASCCE_TRANSTYPE,
get_vale_from_cd_p('||get_vale_from_cd1('13','5')||'),--开户省份为自定义字段
USER_ID,
'||get_vale_from_cd1('4','4')||',--证件类型为自定义字段
'||get_vale_from_cd1('7','4')||',--证件号为自定义字段要转换成动态SQL
GET_AMT_BY_CURRENCY(AMOUNT_ORIGINAL,AMOUNT_CURRENCY),--通过汇率和币种转换
RISK_SCORE,
USER_ACCT_NUMBER,
'||get_vale_from_cd_g1(get_vale_from_cd_al)||',--付款人姓名
'||get_vale_from_cd1('11','5')||',--收款人开户行自定义字段需转换成动态SQL
EXT_ACCT_NUMBER,
EXT_ACCT_OWNER_NAME,
NVL(POLICY_RULE_ID,''FALLBACK_RULE'')ASRULE_NAME,
SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''-'')+1),--描述
GET_SCORE_RANGE(RISK_SCORE)ASRISK_SCORE_RANGE
FROMEVENT_LOG_REALTIMET1
))';
executeimmediateVAR_DYNAMIC_SQL;
㈥ oracle存储过程中如何对一个变量累加赋值 最好有个例子
1、首先打开oracle数据库,如下图所示。
㈦ Oracle 存储过程的动态变量如何使用
实现思路:
第一步:先定义一个字符串,这个字符串SQL是由动态变量和其他的sql语句成分拼接组成。
第二步:直接执行 execute immediate SQL;
备注:以上方法是oracle提供的动态执行方法语句,直接使用就可以。
VAR_DYNAMIC_SQL := 'INSERT INTO RP_COMFIRMED_EVENT_DETAIL( EVENT_ID,--ID TRANS_TIME,--交易时间 TRANS_TYPE,--交易类型 TRANS_PROVINCE,--开户省份 CCE_CSTNO,--客户号 CCE_CERTTYPE,--证件类型 CCE_CERTNO,--证件号 CCE_AMT,--交易金额 CCE_RISK_SCORE,--不处理的风险分值 CCE_PAYEE_ACC,--付款人账号 CCE_PAYEE_NAME,--付款人姓名 CCE_REC_NODE,--收款人开户行 CCE_REC_ACC,--收款人账号 CCE_REC_NAME,--收款人姓名 RULE_NAME,--规则名称 CCE_RULE_NOTE,--规则描述 SCORE_RANGE--处理后的风险分值 )select EVENT_ID, SYS_CREATION_DATE, GET_NAME_BY_CODE(GET_TOTAL_EVENT_TYPE(T1.EVENT_TYPE,T1.USER_DEFINED_EVENT_TYPE),''eventType'') AS TRANS_TYPE, -- get_province(IP_COUNTRY,IP_CITY) AS CCE_TRANSTYPE, get_vale_from_cd_p('||get_vale_from_cd1('13','5')||'),--开户省份为自定义字段 USER_ID, '||get_vale_from_cd1('4','4')||',--证件类型为自定义字段 '||get_vale_from_cd1('7','4')||',--证件号为自定义字段 要转换成动态SQL GET_AMT_BY_CURRENCY(AMOUNT_ORIGINAL,AMOUNT_CURRENCY),--通过汇率和币种转换 RISK_SCORE, USER_ACCT_NUMBER, '||get_vale_from_cd_g1(get_vale_from_cd_al)||',--付款人姓名 '||get_vale_from_cd1('11','5')||',--收款人开户行 自定义字段 需转换成动态SQL EXT_ACCT_NUMBER, EXT_ACCT_OWNER_NAME, NVL(POLICY_RULE_ID,''FALLBACK_RULE'') AS RULE_NAME, SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''-'')+1),--描述 GET_SCORE_RANGE(RISK_SCORE) AS RISK_SCORE_RANGE FROM EVENT_LOG_REALTIME T1))'; execute immediate VAR_DYNAMIC_SQL;
㈧ Oracle存储过程where语句使用变量
create PROCEDURE p_update
(V_DQDM in varchar2(6))
as
begin
if length(V_DQDM)=6
then
update table1 ..... where dqdm=V_DQDM;
commit;
else
update table1 ..... where dqdm like V_DQDM||'%'
commit;
end if;
end p_update;
类似这么写
㈨ oracle 如何在存储过程中对变量进行模糊查询
你这个sql可以用一个varchar 变量写 当成字符串 不就可以拼进去变量了吗 然后再执行这个拼好的字符串 EXECUTE IMMEDIATE
或是 在存储过程中你这样写模糊查询这块 ‘%’‘’||f_ComCode||‘’‘%’ 在存储过程中‘代表转译 ’‘就相当于‘