1、像select columnName into :value1 from tableName where ... 这样的语法
如何检查select返回返回了0行,或者多于1行??
2、plsql中的case when then 语句 when节中能否包含多个或者连接值,或可以达到相同目的的语法,谢谢
例如 case v_value1
when 1 or 2 or 3 then
end case
如何检查select返回返回了0行,或者多于1行??
2、plsql中的case when then 语句 when节中能否包含多个或者连接值,或可以达到相同目的的语法,谢谢
例如 case v_value1
when 1 or 2 or 3 then
end case
ELSE 0 END FROM dual--
123
v_sql :=
'UPDATE t_store_in_instructions SET instruction_status = :p1 WHERE instruction_no = :p2 AND instruction_status = :p3'; EXECUTE IMMEDIATE v_sql
USING c_finish_status, p_ins, c_default_status; IF SQL%ROWCOUNT = 0 --当没有更新的记录时抛出异常
THEN
RAISE_APPLICATION_ERROR (-20002, TO_CHAR (p_ins), FALSE);
END IF;
又出现两个问题声明了一个rowtype变量 v_value1 tableName%Rowtype;
1. 如何用select 为v_value1赋值?
我用 select * into :v_value1 from tabelName where... 报错
2、如果v_value1赋值没成功,
如何判断rowtype类型变量中没赋值?
又如何使rowtype类型变量中的值恢复为没赋值状态,用null判断可以吗?
3、rowtype类型的变量可以放在游标中吗?谢谢!!!
BEGIN
SELECT * INTO rowarea FROM B_AREAS WHERE area_id='M';
END;
我用 select * into :v_value1 from tabelName where... 报错
加了:是什么意思,难道是绑定变量2、如果没有记录
会抛出异常3、rowtype类型的变量可以放在游标中吗?
没看懂是什么意思
1、
declare v_row1 tableName@rowtype;
begin
select * into v_row1 from tableName where...
end如果这个select没返回行,这时候并不人为抛出异常,而是继续执行过程,但是当后面用到v_row1时候,如果判断v_row1中有没有值呢??如果select成功了,后面的程序由于某种需要想使v_row1恢复成未赋值之前的状态,如何做呢??2、如果用参数传入一个值,这个值用在where中,希望使用绑定变量(以减少硬解析),如何写呢??
另外into后面的变量列表,是否使用绑定变量??谢谢
SELECT CASE WHEN 1 IN (1, 2,3) THEN 123
ELSE 0 END FROM dual这种语法是否支持 多个when的情况
例如
select case
when v_value1 in (1,2,3) then
......
when v_value1 in (10,11,12) then
......
end
from dual;我像上面那样写了,但是报错
如果不支持,请教是否还有其它支持像下面这种目的的语法格式
case value1
when 1 or 2 or 3 then
when 10 or 11 or 12 then
else
end case;
谢谢
WHEN 1 IN (4,5,6) THEN 456
ELSE 0 END FROM dual--执行没有问题
解释一下
1、
declare v_row1 tableName@rowtype;
begin
select * into v_row1 from tableName where...
end如果这个select没返回行,这时候并不人为抛出异常,
--系统会抛出异常
你要处理的
2、如果用参数传入一个值,这个值用在where中,希望使用绑定变量(以减少硬解析),如何写呢??v_sql :=
'UPDATE t_store_in_instructions SET instruction_status = :p1 WHERE instruction_no = :p2 AND instruction_status = :p3'; EXECUTE IMMEDIATE v_sql
USING c_finish_status, p_ins, c_default_status; --这个例子中p1,p2,p3 都是绑定的变量
SELECT CASE WHEN 1 IN (1, 2,3) THEN 123
WHEN 1 IN (4,5,6) THEN 456
ELSE 0 END FROM dual
--执行没有问题我的意思是then后是一段plsql代码,也可以吗?我这里是报错的2、
declare v_row1 tableName@rowtype;
begin
select * into v_row1 from tableName where...
end如果这个select没返回行,这时候并不人为抛出异常,
--系统会抛出异常
你要处理的请教,抛出异常是会转到异常处理段吗?
exception
when others then但是游标不会转到异常处理段,通过判断%NotFound跳出取值循环3、关于绑定变量我是这么写的,看了本书,这是书上的语法,但是报错
create or replace function F_function1
(
p_para1 in Varchar
)
return number is
Variable v_value1 Varchar2(10);
v_value2 Varchar2(100);
begin
:v_value1 := p_para1;
select column2 into v_value2 from tableName where column1=:v_value1; return.....
end;