当前位置:首页 » 编程语言 » oracle存储过程sql变量
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oracle存储过程sql变量

发布时间: 2022-04-01 07:14:23

❶ oracle存储过程 调用变量

提供下思路,逐步测试看看,通过下面sql测试:若测试ok,则name变量类型或者赋值异常,若测试异常,则考虑函数实现是否有异常
for:
declare
begin
dbms_output.putline(max_int(1,'aaaaaaa'));
end;

❷ oracle存储过程变量赋值报错

ORACLE中字符串连接符是双竖线“||”。
把代码中的“+”换成“||”,另外,ddl语句不需要commit,去掉commit,代码如下:
CREATE OR REPLACE PROCEDURE aaa_Zbflagexb(Vdwlx VARCHAR,
Vbzsj VARCHAR) IS
Vsql VARCHAR(8000);
Vtname VARCHAR(100);
Vtnameex VARCHAR(100);
BEGIN
Vtname := 'ZBFlag_' || Vdwlx;
Vtnameex := 'ZBFlagEx_' || Vdwlx;
Vsql := 'create table ' || Vtname ||
' (dwbh varchar(100),dwmc varchar(200),flag number(1),dwlx number) ';
EXECUTE IMMEDIATE Vsql;
--COMMIT;
END;

❸ oracle 如何在存储过程中对变量进行模糊查询

你这个sql可以用一个varchar 变量写 当成字符串 不就可以拼进去变量了吗 然后再执行这个拼好的字符串 EXECUTE IMMEDIATE
或是 在存储过程中你这样写模糊查询这块 ‘%’‘’||f_ComCode||‘’‘%’ 在存储过程中‘代表转译 ’‘就相当于‘

❹ oracle在写存储过程时怎样将变量和字符串进行连接

变量直接写,要连接字符串的话,用 || 这个符号,后面的字符串用单引号引!
例如 变量 V_str 字符串' select emp from table where '
连接后为:
------------------------------------------------
' select emp from table where '
|| V_str
------------------------------------------------
希望可以帮助到你!

❺ 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是由动态变量和其他的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 存储过程 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 ;
还要注意传入的变量,引号别弄丢了...
应该是可以的,我没有测试,很久没有动过这些了.

❽ 如何在oracle存储过程中执行动态sql语句

给你一个案例对这些,使用execute immediate就可以了,存储过程和语句块也是一样的,自己改一改,没区别的。

语法格式
EXECUTEIMMEDIATEdynamic_string
[INTO{define_variable[,define_variable]...|record}]
[USING[IN|OUT|INOUT]bind_argument[,[IN|OUT|INOUT]bind_argument]...]
[{RETURNING|RETURN}INTObind_argument[,bind_argument]...];

1,操作DDL语句,这也是动态SQL的常用操作之一
如下所示使用动态SQL创建数据库表:
DECLARE
l_dync_sqlVARCHAR2(100);
BEGIN
l_dync_sql:='CREATETABLEcux_dync_test(idNUMBER,creation_dateDATE)';
EXECUTEIMMEDIATEl_dync_sql;
END;
2,操作DML语句,使用USING子句可以按照顺序将输入的值绑定到变量,如果动态SQL只有单行输出的话可以直接使用INTO来接收输出值,如下所示。
DECLARE
l_dync_sqlVARCHAR2(100);
l_person_nameVARCHAR2(140);
l_ageNUMBER;
BEGIN
l_dync_sql:='SELECTperson_name,ageFROMcux_cursor_testWHEREperson_id=:1';
EXECUTEIMMEDIATEl_dync_sql
INTOl_person_name,l_age--使用into语句接手动态SQL的输出,如果输出多行则出错
USING101;--给绑定变量赋值
dbms_output.put_line('PersonName:'||l_person_name);
dbms_output.put_line('Age:'||l_age);
END;

❾ oracle存储过程变量传递

是不是跟sql server一样,不能用in 变量的形式,要直接写成 in (1,2,3)的形式才行

❿ oracle 存储过程是用什么系统变量返回sql语句的执行结果的

DECLARE
v_cursor NUMBER;
v_stat NUMBER;
aa VARCHAR(100);
bb VARCHAR(100);
cc VARCHAR(100);
dd VARCHAR(100);
v_sql VARCHAR(200);
BEGIN
v_sql :='select * from aaa';
v_cursor := dbms_sql.open_cursor; --打开游标;
dbms_sql.parse(v_cursor, v_sql, dbms_sql.native); --解析动态SQL语句;
dbms_sql.define_column(v_cursor, 1, aa,100); --定义列
dbms_sql.define_column(v_cursor, 2,bb, 100);
dbms_sql.define_column(v_cursor, 3,cc,100);
dbms_sql.define_column(v_cursor, 4, dd,100);
v_stat := dbms_sql.execute(v_cursor); --执行动态SQL语句。