存储过程中,传入一个参数V_DQDM。要求V_DQDM长度是6位时,语句为update table1 ..... where dqdm=V_DQDM 。当V_DQDM长度小于6位时,语句为update table1 ..... where dqdm like V_DQDM||'%'。
因为语句较多,可不可以像java程序里一样,使用一个变量,用拼字符串的方式,实现一个where 语句。
如java 中,String wheSql=""; if(v_dqdm.length()>=6){wheSql=" where dqdm =' "+v_dqdm+" ' "}else{wheSql=" where dqdm like ' "+v_dqdm+ " %' "}
"update table ...... "+wheSql ;
求一个存储过程完整的写法。谢谢
类似è¿ä¹å
追é®ä¸æ¯è¿ä¸ªææãæå¾å¤å¾å¤çupdateè¯å¥ãå¸ææwhereè¯å¥ä½ä¸ºä¸ä¸ªåéæ¥ç¨ã
è¿æ ·updateè¯å¥åªè¦åä¸ä¸ªå°±è¡äºãä½ è¿æ ·è¦å两个ã
å°±åä¸é¢åçjavaçä¾åä¸æ ·ã
create PROCEDURE p_update
(V_DQDM in varchar2)
as
v_str varchar2(200);
begin
select case when length(V_DQDM<6) then 'dqdm like V_DQDM||'%'' else 'dqdm=V_DQDM' into v_str from dual;
execute immediate 'update table1 ..... where '||v_str|| '';
end p_update;
没è¯è¿è¿ç§åæ³ï¼å¯è½%å·é£è¿éè¦è½¬ä¹ï¼æç¹éº»ç¦ï¼åªè½ç»ä½ æä¾ç¹æè·¯äº
Oracle存储过程where语句使用变量
create PROCEDURE p_update(V_DQDM in varchar2(6))asbeginif length(V_DQDM)=6thenupdate table1 ... where dqdm=V_DQDM;commit;elseupdate table1 ... where dqdm like V_DQDM||'%';commit;end if;end p_update;类似这么写
oracle在写存储过程时怎样将变量和字符串进行连接?
变量直接写,要连接字符串的话,用 || 这个符号,后面的字符串用单引号引。变量 V_str 字符串' select emp from table where '连接后为:' select emp from table where ' || V_str
oracle 的存储过程中 动态的创建一张表 然后插入一个变量到这个表中,表...
1、execute immediate ' insert into addtopinfo values('||sysdate||','||v_name||')'; v_name 既然是变量 怎么可能会用' '括号起来;就算是 直接执行 的话 也是 execute immediate ' insert into addtopinfo values(sysdate,v_name);2、如果有v_name的话 ,我建议你一般用拼sql的方式来...
谁知道Oracle数据库存储过程的语法?
DATE;BEGIN END 存储过程名字 2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个 列存储 多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)例子:BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;EXCEPTION WHEN NO_DATA_FOUND ...
oracle存储过程的基本语法及注意事项
) IS 变量 INTEGER := ;变量 DATE;BEGIN END 存储过程名字 SELECT INTO STATEMENT 将select查询的结果存入到变量中 可以同时将多个列存储多个变量中 必须有一条 记录 否则抛出异常(如果没有记录抛出NO_DATA_FOUND)例子 BEGIN SELECT col col into 变量 变量 FROM typestruct where xxx;EXCEPTION WHEN ...
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语句where能不能加if?
`IF`语句在SQL中主要用于条件判断,通常出现在存储过程或函数中,而非直接嵌入`WHERE`子句中。在特定的SQL上下文中,`IF`用于逻辑判断,而`WHERE`子句用于过滤查询结果。对于动态拼接语句,即根据变量或表达式构建SQL查询,可以使用`IF`语句与字符串拼接方法。例如,使用`VARIABLE`存储要查询的产品ID,通过...
oracle创建存储过程 有小红叉, 存储过程新手,请高手不吝赐教,, 语句...
在存储过程中,一个select语句中,查找的字段必须要放到变量中 也就是 select 字段1 into 变量1 from 表名 where 条件;这样才不会报错 而你这个,没什么实际的意义 你要是非想让它不红叉,可以这样 CREATE OR REPLACE PROCEDURE P_TF_F_HOT_CHECK ( title in varchar2)IS v_hot_id int;v_...
ORACLE存储过程varchar2变量赋值问题。
看到错误提示的地方,你应该是想执行一个动态SQL(在open语句中str是一个变量, 但是想把str用成SQL语句的in字句的部分),这明显是不对的(如果要用动态SQL,则是另外的写法)。可以open的查询语句,直接在查询语句中根据ORGCODE的值用case when构造查询的条件。例如:where (case when ORGCODE = 'SH' ...
oracle 中字段作为变量的语句怎么写
1. Oracle 8i 及以上版本的过程中处理动态 SQL 语句的办法 declare v_col_name varchar2(30) := ’name’; --字段名 name 用变量来表示 v_user_name varchar2(30); --用户名称 v_user_age integer; --用户年龄 v_sql_str varchar2(500); --动态 SQL 语句 begin v_sql_str := ’...