① plsql 创建函数 编译错误
CREATE OR REPLACE FUNCTION getRemark(sheetid in jyy.jyy_reporoid%type)
return jyy.jyy_reportdefine.remark%type is
vremark jyy_reportdefine.remark%type;
vrep_id jyy_reporreportdefine_id%type;
begin
select reportdefine_id, name into vrep_id
② PL/SQL 求函数编写
CREATE OR REPLACE FUNCTION F_TAX(P_EMPNO IN EMP.EMPNO%TYPE) RETURN NUMBER AS
V_SAL EMP.SAL%TYPE;
V_RETURN NUMBER(4,2);
V_GRADE SALGRADE.GRADE%TYPE;
BEGIN
V_SAL:=0;
SELECT SAL INTO V_SAL FROM EMP WHERE EMPNO=P_EMPNO;
SELECT GRADE INTO V_GRADE FROM SALGRADE WHERE V_SAL BETWEEN LOSAL AND HISAL;
CASE V_GRADE
WHEN 1 THEN V_RETURN:=0;
WHEN 2 THEN V_RETURN:=V_SAL*0.05;
WHEN 3 THEN V_RETURN:=V_SAL*0.1;
WHEN 4 THEN V_RETURN:=V_SAL*0.15;
ELSE V_RETURN:=0;
END CASE;
RETURN V_RETURN;
EXCEPTION
WHEN OTHERS THEN
V_RETURN:=-1;
RETURN V_RETURN;
END F_TAX;
③ 怎样用PL/SQL编写带两个参数的函数
既然叫PL/SQL
那就oracle的吧:
CREATE
OR
REPLACE
PROCEDURE
orderno_check(
orderno_in
VARCHAR(100)--字段不清楚什么类型的,你自己改吧
)
AS
DECLARE
ostatus_tmp
CHAR(1)--字段不清楚什么类型的,你自己改吧
BEGIN
ostatus_tmp:='
';
SELECT
ostatus
INTO
ostatus_tmp
FROM
表名
WHERE
orderno=orderno_in;
IF
ostatus_tmp='p'
THEN
DELETE
FROM
表名
WHERE
orderno=orderno_in;
ELSE
DBMS_OUTPUT.put_line('该订单已确认,无法删除');
END
IF;
END;
/
说明,要想看到输出语句一定要打开控制台输出
SET
serveroutput
ON;
---
以上,希望对你有所帮助。
④ oracle中如何创建函数,本人用的是pl/sql,初学者,最好能给出例子和详细讲解
下面是一个函数的简单示例!建议阅读相关书籍以便充分理解!毕竟很多细节是很难一一描绘的.系统看看书会比较好!
函数是有名称的pl/sql块
函数有返回值
在表达式中调用函数
存储在服务器端
CREATE OR REPLACE FUNCTION get_sal
(v_id IN emp.empno%TYPE) RETURN NUMBER
IS
v_salary emp.sal%TYPE :=0;
BEGIN
SELECT sal INTO v_salary FROM emp WHERE empno = v_id;
RETURN (v_salary);
END get_sal;
/
验证对象
select object_name,object_type from user_objects;
查看原程序
select text from user_source;
调用函数
select get_sal(7839) from al;
删除函数
DROP FUNCTION get_salary;
⑤ PL/SQL基础的函数
函数是命名了的、存储在数据库中的PL/SQL程序块。函数接受零个或多个输入参数,有一个返回值,返回值的数据类型在创建函数时定义。定义函数的语法如下:
FUNCTION
name
[(parameter[,parameter,...])]
RETURN
datatypes
IS
[local
declarations]
BEGIN
execute
statements
[EXCEPTION
exception
handlers]
END
[name]
⑥ sql 创建函数
USE xx
go
create function ST_FUN(@XH varchar(20))
returns TABLE
as
return (select s.[S#] as 学号,s.sname as 姓名,sc.grade as 成绩 from s , sc where s.[s#]=sc.[s#] and s.[s#]=@xh )
go
select * from dbo.ST_FUN(2001)
go
CREATE TRIGGER ST_TRI
ON SC
FOR INSERT
AS
declare @XH varchar(20)
select @xh = [S#] from SC
if not exists(select * from S where [S#]=@xh)
ROLLBACK TRANSACTION
GO
insert into sc values ('9999','1','99')
⑦ 在plsql中,编写一个函数,怎么编写
直接sql语句:
select wm_concat(decode(e.empno,7369,d.dname,null)),wm_concat(decode(e.empno,7369,e.ename,null)) from emp e, dept d
where e.empno in ((select e1.mgr from emp e1 where e1.empno = 7369), 7369)
and e.deptno = d.deptno
/
function :
createorreplacefunctionprint_(p_empnoinnumber)returnvarchar2is
l_resultvarchar2(100);
begin
selectwm_concat(decode(e.empno,p_empno,d.dname,null))||','||wm_concat(decode(e.empno,p_empno,e.ename,null))
intol_result
fromempe,deptd
wheree.empnoin
((selecte1.mgrfromempe1wheree1.empno=p_empno),p_empno)
ande.deptno=d.deptno;
return(l_result);
end;
测试:
SQL>selectprint_(7369)fromal;
PRINT_(7369)
--------------------------------------------------------------------------------
RESEARCH,SMITH
SQL>
⑧ 关于PLSQL怎么建立表函数
什么叫表函数?
⑨ 在plsql中创建函数,系统调用时,报错ORA—06575
createorreplacefunctionv_emp(v_strnumber:=null)
returnnumber
AS
v_valuenumber(20);
BEGIN
selectidintov_valuefromempwhereid=v_str;--你确定这个表里有id字段?正常emp表里应该是empno这个名称
returnv_value;
commit;--不需要commit
END;
另外,你这个函数没什么意义啊?输入一个v_str的参数,返回值给了v_value,还是这个id值。