精华内容
下载资源
问答
  • 摘要:介绍具有自主知识产权的某安全数据库管理系统GKD-Base的PL/SQL引擎,基于该引擎研究GKD-Base存储函数机制实现的关键技术。设计了函数管理器和执行状态堆栈,通过语法树表示存储函数编译后生成的中间代码,并...
  • PL/SQL存储函数,存储过程

    千次阅读 2016-10-30 17:04:05
    存储过程和存储函数 存储过程和存储函数跟我们知道的表、视图、索引、序列、同义词等一样是我们数据中的对象。 笔记教程见:https://github.com/caojx-git/learn/blob/master/notes/oracle/PLSQL.sql 1.1什么是...

    一.存储过程和存储函数

    存储过程和存储函数跟我们知道的表、视图、索引、序列、同义词等一样是我们数据中的对象。

    笔记教程见:https://github.com/caojx-git/learn/blob/master/notes/oracle/PLSQL.sql

    1.1什么是存储过程和存储函数:

    指存储在数据库中供所有的用户程序调用的 子程序叫存储过程、存储函数。
    存储过程和存储函数的相同点:完成特定功能的程序
    存储过程和存储函数的区别:是否用return 语句返回值,存储过程不能使用return 返回一个函数的值,存储函数可以,对于其他的
    可以认为他们是相同的。

    二、创建和使用存储过程


    使用create procedure命令建立存储过程和存储函数

     

    语法:

     

     

    	--创建或替换一个存储过程              参数列表需要指明输入或者输出参数
    	create [or replace] procedure 过程名(Name in | out type, Name in | out type, ...)
    	as | is --相当于PL/SQL块的declare,这里不可省略
    	PLSQL子程序体;

     

     

     

     

     

    1.2.1不带参数的存储过程

    --第一个存储过程打印helloworld --注意不带参数的存储过程过程名不能有()

    create [or replace] procedure sayhelloWorld
    	as 
    	--相当于PL/SQL中declare说明部分,不过这里即使没有说明部分也需要写
    	begin
    		dbms_output.put_line('helloWorld');
    	end sayhelloWorld;

     

     

    如果使用PL/SQL Developer 工具,如果执行成功可以在左边的procedure区域看到我们执行后编译后的存储过程(成功一般显示为绿色,如果不对会有一个小红x)

     

     

    1.2.2调用存储过程

    方式一:在 Command Windows(命令窗口中执行) exec sayhelloWorld();


    方式二:可以在SQL Windows或 Command Windowsz中执行PL/SQL调用

    1.2.3带参数的存储过程

    --创建一个带参数的存储过程,给指定的员工涨100员工资,并打印涨前和涨后的薪水

    --in表示是一个输入参数,如果带参数,需要指明是输入参数还是输出参数

     

    	create or repalce procedure raisesalary(eno in number) 
    		as
    			--定义一个变量保存涨前的薪水
    			psal emp.sal%type;
    		begin
    			--得到员工的涨前的薪水
    			select sal into psal emp where empno=eno;
    			--给员工涨100
    			update emp set sal = sal+100 where empno = eno;
    			--这里进行了update,不过我们一般不在存储过程和存储函数中进行提交事务,一般由调用者进行提交
    
    			--打印涨前和涨后的薪水
    			dbms_output.put_line('涨前:'||psal||'涨后'||(psal+100));
    		end;

     

     

     

     

     

    1.2.4 带参数的存储过程的调用

    			begin
    				raisesalary(7839); --给员工号为7839涨工资
    				raisesalary(7566); --给员工号为7566涨工资
    			end;
    

     

    1.3存储过程的debug调试

    有时候有一些存储过程比较大,需要进行debug调试,看是否符合我们的逻辑需求,使用PL/SQL Developer可以对存储过程进行调试

    1.3.1选中需要调试的存储过程--》test进入debug调试模式

     

    1.3.2设置断点,可以单步运行

     

    三、存储函数


    函数(Function) 为一命名的存储程序,可带参数,并返回一计算值
    函数和过程结构类似,但必需要有一个return子句,用于返回函数数值。
     

    3.1创建存储函数的语法

    --带参数的存储函数必需指明参数列表是输入参数还是输出参数

    --假如不带参数,不能带()

     

    	create [or replace] function 函数名(Name in | out type, Name in | out type, ...)
    	return 函数值类型
    	as | is
    	PL/SQL子程序体;

     

     


    案例:

     

     

    --存储函数:查询某个员工的年收入

     

     

    		create or replace function queryempincomme(eno in number)
    		return number
    		as
    			--定义变量保存员工的薪水和奖金
    			psal emp.sal%type;
    			pcomm emp.comm%type;
    		begin
    			--得到员工的月薪和奖金
    			select sal,comm into psal,pcomm from emp where empno=eno;
    			--直接返回年收入
    			return psal*12+nvl(pcomm,0);
    		end;

     

     

     

     

     

    3.1.1存储函数的调用

    		declare
    			ypsal number;
    		begin
    			--得到员工7891的年收入
    			ypsal:=queryempincomme(7891);
    			dbms_output.put_line(ypsal);
    		end;

     

    四、in和out 参数

    前边我们介绍了存储过程和存储函数
    a.一般来讲,存储过程和存储函数的区别在于存储函数可以有一个返回值;而存储过程没有返回值
    b.如果存储过程或存储函数带参数的话我们需要指明是输入参数还是输出参数
    c.存储过程和存储函数都可以通过out参数指定一个或多个输出参数,我们可以利用out参数,在过程或函数中实现返回一个或多个值
     (即存储过程本来不能有返回值,但利用out参数,我们就可以实现存储过程返回值)
    d.一般如果需要返回多个值,我们优先使用存储过程,如果只要返回一个值我们优先使用存储函数

    案例:
    --利用out参数查询员工的姓名,月薪和职位

    	create or replace procedure queryempinfo(eno in number,pename out varchar2,psal out nubmer,pjob out varchar2)
    	as
    	begin
    		--得到员工的姓名,月薪,职位
    		select ename,sal,empjob into pename,psal,pjob from emp where empno=eno;
    	end;


    调用:

     

    	declare 
    		eno number;
    		pename varchar2(30);
    		psal number;
    		pjob varchar2(200);
    	begin
    		eno := 7839;
    		--调用存储过程,我们可以得到out参数的返回值
    		queryempinfo(eno,pename,psal,pjob);
    		dbms_output.put_line(pename);
    		dbms_output.put_line(psal);
    		dbms_output.put_line(pjob);
    	end;
    



    问题:上边的案例只利用out参数返回了员工的部分信息
    1.假如需要查询员工的所有信息,out参数有很多,难道要写很多个out参数?
    2.查询某个部门中所有员工的所有信息---》out中返回一个集合

     

    五、程序包

     

    程序包在一般情况下使用的还是比较少的,这里粗略的说一下,如果需要使用,请见其他资料如《精通Oracle10g SQL和PL/SQL》

    oracle中的程序包分为包头和包体,包头负责声明,包体负责实现(者很像java中的接口与实现类的关系)

    包头语法:

    	create [or replace] package package_name
    	is | as
    	--定义公用常量、变量、游标、类型
    	--定义公用的过程和函数
    	end package_name;


    包体语法

     

    	create [or replace] package body package_name
    	is | as
    	--定义私有常量、变量、类型、游标、过程和函数
    	--实现公用的过程和函数
    	end package_name
    

    案例:查询某个部门中所有员工的所有信息,这里使用如下方案,实现第4条留下的几个问题out参数很多显然不可取,我们是使用cursor光标实现

    创建包头

     

    	create or replace package mypackage as 
    		--定义公用的类型 自定义类型empcursor 为 cursor类型
    		type empcursor is ref cursor;
    		--定义公用的过程和函数 --之后需要在包体中实现
    		procedure queryEmpList(dno in number,empList out empcursor);
    		end mypackage;

    创建包体

     

    		create or replace package body mypackage
    		as
    			procedure queryEmpList(dno in number,empList out empcursor)
    			as
    			begin
    				--打开光标
    				open empcursor from select * from emp where deptno=dno;
    			end queryEmpList;
    		end mypackage;

     

     

     


    调用程序包:
    调用公用变量
    exec 程序包名.公用变量名 := 赋值;
    调用公共过程
    exec 程序包名.公用过程名(参数);

     

     

     

     

     

     

     

     

    下边两个图是我截取《精通Oracle10g SQL和PL/SQL》的片段

     

     

    展开全文
  • Postgres SQL存储函数参数使用说明

    千次阅读 2017-08-23 16:03:23
    但是在创建存储函数时,怎么把分区表的表名当作参数传进存储函数,然后在函数内部动态创建表。可是直接使用字符串的表名不起作用。经研究,需要使用EXECUTE去执行,具体做法为:拼接一个创建表的sql语句,然后用...

    在使用postgres数据库的过程中,遇到了表分区的问题。为了创建表分区,首先得创建分区表。首先想到的是写个存储函数,然后定时的创建分区表,然后再创建触发器去操作分区表。但是在创建存储函数时,怎么把分区表的表名当作参数传进存储函数,然后在函数内部动态创建表。可是直接使用字符串的表名不起作用。经研究,需要使用EXECUTE去执行,具体做法为:拼接一个创建表的sql语句,然后用EXECUTE 执行sql语句,这样创建表就完成了。详细代码如下:

    CREATE OR REPLACE FUNCTION "public"."pro_partition_play_recond"(tablename varchar)
      RETURNS "pg_catalog"."void" AS $BODY$Declare  
        sqlstring varchar(1024); 
    		start_date varchar DEFAULT '2017-08-01';
    		end_date varchar DEFAULT '2017-09-01';
    		index_str varchar ;
    BEGIN
    		sqlstring:= 'create table '|| tablename ||'(check(create_date >= ''' || start_date || '''  AND create_date < ''' || end_date || ''')) INHERITS (md_play_recode);';
        EXECUTE sqlstring;
    		index_str=tablename || '_create_date';
    		raise notice 'Parameter  is: %', index_str ;	
    		sqlstring:='create index '||index_str||' on '|| tablename ||' (create_date);';
    		EXECUTE sqlstring;
    	 
    END
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE COST 100
    ;
    
    ALTER FUNCTION "public"."pro_partition_play_recond"(tablename varchar) OWNER TO "postgres";

    说明:表名参数tablename 在拼接sql语句时,应用用:'|| tablename ||',需要加引号时用这个''' || start_date || '''。这是3个单引号。
    调用如下:

    select pro_partition_play_recond('md_play_recode_201708');

    效果如下:




    代码如下:

    CREATE OR REPLACE FUNCTION "public"."pro_partition_play_recond"(tablename varchar)
      RETURNS "pg_catalog"."void" AS $BODY$Declare  
        sqlstring varchar(1024); 
    		start_date varchar DEFAULT '2017-08-01';
    		end_date varchar DEFAULT '2017-09-01';
    		index_str varchar ;
    BEGIN
    		sqlstring:= 'create table '|| tablename ||'(check(create_date >= ''' || start_date || '''   AND create_date < ''' || end_date || ''')) INHERITS (md_play_recode);';
        EXECUTE sqlstring;
    		index_str=tablename || '_create_date';
    		raise notice 'Parameter  is: %', index_str ;	
    		sqlstring:='create index '||index_str||' on '|| tablename ||' (create_date);';
    		EXECUTE sqlstring;
    	 
    END
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE COST 100
    ;


    展开全文
  • SQL存储过程和函数

    千次阅读 2019-07-05 14:19:07
    SQL存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合。 与函数的区别 (1)函数必须有返回值,而存储过程没有 (2)存储过程的参数可以使用 IN、OUT、INOUT 类型,而函数的...

    SQL存储过程和函数

      存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合。
    

    与函数的区别

    (1)函数必须有返回值,而存储过程没有

    (2)存储过程的参数可以使用 IN、OUT、INOUT 类型,而函数的参数只能是 IN 类型的。

    相关操作

    语句定义

    CREATE PROCEDURE sp_name
    ([proc_parameter[,…]])
    [characteristic …] routine_body

    创建存储过程

    CREATE FUNCTION sp_name
    ([func_parameter[,…]]
    RETURNS type [characteristic …]
    routine_body

    创建函数

    ALTER {PROCEDURE | FUNCTION} sp_name
    [characteristic …]

    修改 存储过程/函数

    CALL sp_name([parameter[,…]])

    调用过程

    DROP PROCEDURE name

    删除存储过程

    SHOW {PROCEDURE|FUNCTION} STATUS [LIKE ‘pattern’]

    查看存储过程或者函数的状态

    SHOW CREATE {PROCEDURE |FUNCTION} sp_name

    查看存储过程或者函数的定义

    select * from routines where ROUTINE_NAME = ‘film_in_stock’ \G

    获取存储过程和函数的包括名称、类型、语法、创建人 等信息。

    DECLARE var_name[,…] type [DEFAULT value]

    变量的定义{用于begin…end块中}

    SET var_name = expr [, var_name = expr]

    变量的赋值

    DECLARE condition_name CONDITION FOR condition_value

    条件的定义

    DECLARE handler_type
    HANDLER FOR condition_value[,…] sp_statement

    条件的处理

    DECLARE cursor_name CURSOR FOR select_statement

    声明光标

    OPEN cursor_name

    打开光标

    FETCH cursor_name INTO var_name [, var_name] …

    fetch光标

    CLOSE cursor_name

    关闭光标

    IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] …
    [ELSE statement_list]
    END IF

    IF语句

    CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] …
    [ELSE statement_list]
    END CASE

    CASE语句

    [begin_label:] LOOP
    statement_list
    END LOOP [end_label]

    LOOP语句

    [begin_label:] REPEAT
    statement_list
    UNTIL search_condition
    END REPEAT [end_label]

    REPEAT语句

    [begin_label:] WHILE search_condition DO
    statement_list
    END WHILE [end_label]

    WHILE语句

    参数说明:

    创建存储过程的proc_parameter:

    • [ IN | OUT | INOUT ] param_name type

    创建函数的func_parameter:

    • param_name type

    创建函数的type:

    • Any valid MySQL data type

    创建存储过程/函数的characteristic:

    • (1) | LANGUAGE SQL //说明下面过程的BODY是使用SQL语言
    • (2) | [NOT] DETERMINISTIC //DEDETERMINISTIC 确定的,即每次输入一样输出也一样的程序,NOT DETERMINISTIC 非确定的,默认是非确定的。
    • (3)| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } //CONTAINS SQL 表示子程序不包含读或写数据的语句。NO SQL 表示子程序不包含 SQL 语句。READS SQL DATA 表示子程序包含读数据的语句,但不包含写数据的语句。MODIFIES SQL DATA 表示子程序包含写数据的语句。
    • (4)| SQL SECURITY { DEFINER | INVOKER } //可以用来指定子程序该用创建子程序者的许可来执行,还是使用调用者的许可来执行。默认值是 DEFINER
    • (5) | COMMENT ‘string’ //存储过程或者函数的注释信息。

    创建存储过程/函数的 routine_body:

    • Valid SQL procedure statement or statements

    修改存储过程/函数中的characteristic:

    • { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
      | SQL SECURITY { DEFINER | INVOKER }
      | COMMENT 'string

    条件的定义condition_value:

    • SQLSTATE [VALUE] sqlstate_value <

      |mysql_error_code

    条件的处理参数handler_type:

    • CONTINUE | EXIT | UNDO

    condition_value:

    SQLSTATE [VALUE] sqlstate_value  
    
    | condition_name  
    
    | SQLWARNING  //对所有以 01 开头的 SQLSTATE 代码的速记
    
    | NOT FOUND  //对所有以 02 开头的 SQLSTATE 代码的速记
    
    | SQLEXCEPTION  //对所有没有被 SQLWARNING 或 NOT FOUND 捕获的 SQLSTATE 代码的速记。
    
    | mysql_error_code
    

    例子

    mysql> DELIMITER $$   //delimiter将sql的结束标志设为$$
    
    mysql>
    mysql> CREATE PROCEDURE film_in_stock(IN p_film_id INT, IN p_store_id INT, OUT p_film_count
    
    INT)
        -> READS SQL DATA
    
        -> BEGIN
    
        -> SELECT inventory_id
    
        -> FROM inventory
    
        -> WHERE film_id = p_film_id
    
        -> AND store_id = p_store_id
    
        -> AND inventory_in_stock(inventory_id);  调用了函数inventory_in_stock()
    
        ->
    
        -> SELECT FOUND_ROWS() INTO p_film_count;
    
        -> END $$
    
    Query OK, 0 rows affected (0.00 sec)
    mysql>
    mysql> DELIMITER ;  //delimiter将sql的结束标志设为;
    
    展开全文
  • 主要介绍了谈谈sqlserver自定义函数存储过程的区别,需要的朋友可以参考下
  • MySQL存储函数

    千次阅读 2019-01-11 17:38:43
    MySQL存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。 1、创建存储函数 在MySQL中,创建存储函数使用CREATE FUNCTION关键字,其基本形式如下: CREATE ...

    MySQL存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。

    1、创建存储函数

    在MySQL中,创建存储函数使用CREATE FUNCTION关键字,其基本形式如下:

    CREATE FUNCTION func_name ([param_name type[,...]])
    RETURNS type
    [characteristic ...] 
    BEGIN
    	routine_body
    END;

    参数说明:

    (1)func_name :存储函数的名称。

    (2)param_name type:可选项,指定存储函数的参数。type参数用于指定存储函数的参数类型,该类型可以是MySQL数据库中所有支持的类型。

    (3)RETURNS type:指定返回值的类型。

    (4)characteristic:可选项,指定存储函数的特性。

    (5)routine_body:SQL代码内容。

    2、调用存储函数

    在MySQL中,存储函数的使用方法与MySQL内部函数的使用方法基本相同。用户自定义的存储函数与MySQL内部函数性质相同。区别在于,存储函数是用户自定义的。而内部函数由MySQL自带。其语法结构如下:

    SELECT func_name([parameter[,…]]);

    示例:创建存储函数,实现根据用户编号,获取用户姓名功能。

    (1)先创建tb_user(用户信息表),并添加数据。

    -- 创建用户信息表
    CREATE TABLE IF NOT EXISTS tb_user
    (
    	id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
    	name VARCHAR(50) NOT NULL COMMENT '用户姓名'
    ) COMMENT = '用户信息表';
    
    -- 添加数据
    INSERT INTO tb_user(name) VALUES('pan_junbiao的博客');
    INSERT INTO tb_user(name) VALUES('KevinPan');
    INSERT INTO tb_user(name) VALUES('pan_junbiao');
    INSERT INTO tb_user(name) VALUES('阿标');
    INSERT INTO tb_user(name) VALUES('panjunbiao');
    INSERT INTO tb_user(name) VALUES('pan_junbiao的CSDN博客');
    INSERT INTO tb_user(name) VALUES('https://blog.csdn.net/pan_junbiao');

    查询数据结果:

    (2)创建存储函数

    -- 创建存储函数
    DROP FUNCTION IF EXISTS func_user;
    CREATE FUNCTION func_user(in_id INT)
    RETURNS VARCHAR(50)
    BEGIN
    	DECLARE out_name VARCHAR(50);
    
    	SELECT name INTO out_name FROM tb_user
    	WHERE id = in_id;
    
    	RETURN out_name;
    END;

    (3)调用存储函数

    -- 调用存储函数
    SELECT func_user(1);
    SELECT func_user(2);
    SELECT func_user(3);
    SELECT func_user(4);
    SELECT func_user(5);
    SELECT func_user(6);
    SELECT func_user(7);

    执行结果:

    3、修改存储函数

    MySQL中,通过ALTER FUNCTION 语句来修改存储函数,其语法格式如下:

    ALTER FUNCTION func_name [characteristic ...]
    characteristic:
        COMMENT 'string'
      | LANGUAGE SQL
      | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
      | SQL SECURITY { DEFINER | INVOKER }

    上面这个语法结构是MySQL官方给出的,修改的内容可以包含SQL语句也可以不包含,既可以是读数据的SQL也可以是修改数据的SQL还有权限。此外在修改function的时候还需要注意你不能使用这个语句来修改函数的参数以及函数体,如果你想改变这些的话你就需要删除掉这个函数然后重新创建。

    4、删除存储函数

    MySQL中使用DROP FUNCTION语句来删除存储函数。

    示例:删除存储函数。

    DROP FUNCTION IF EXISTS func_user;

     

    其它补充:

    如果你在创建存储函数时提示以下错误:

    [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is
    enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

    这是我们开启了bin-log, 我们就必须指定我们的函数是否是
    1 DETERMINISTIC 不确定的
    2 NO SQL 没有SQl语句,当然也不会修改数据
    3 READS SQL DATA 只是读取数据,当然也不会修改数据
    4 MODIFIES SQL DATA 要修改数据
    5 CONTAINS SQL 包含了SQL语句

    其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。

    解决方法:

    解决办法也有两种, 第一种是在创建子程序(存储过程、函数、触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个, 例如: CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`()     DETERMINISTIC BEGIN #Routine body goes here... END;;

    第二种是信任子程序的创建者,禁止创建、修改子程序时对SUPER权限的要求,设置log_bin_trust_routine_creators全局系统变量为1。

    设置方法有三种:

    (1)在客户端上执行 SET GLOBAL log_bin_trust_function_creators = 1。

    (2)MySQL启动时,加上--log-bin-trust-function-creators选贤,参数设置为1。

    (3)在MySQL配置文件my.ini或my.cnf中的[mysqld]段上加log-bin-trust-function-creators=1。

    展开全文
  • oracle pl/sql 存储过程和函数与触发器
  • 简单的学习例子 sqlserver 存储过程、函数的创建和使用 和 常用知识点
  • 现需要在sql数据库表C中添加一标志列,并根据标志列另一字端活动编号是等于A表的活动编号,还是等于B表活动编号分别赋为1或0。整个sql如何写
  • SQL存储过程和函数的标准写法

    万次阅读 2017-03-01 16:23:04
    之前一直用的存储过程,今天忽然又接触到跑算法获取返回值的问题,想到可以用函数,好久没用过一时忘了怎么写,还要现查,于是就记录下来,顺便连存储过程一块啦。 存储过程: CREATE PROC dbo.存储名 { @...
  • SQL 函数存储过程、游标与事务模板,学习sqlserver的朋友很多情况下都需要用得到。
  • 原创sql存储过程函数范例,一是为了自己方便查找,今天到公司因为没有我保存的一些范例,一个简单的例子写了半个小时,如果有范例直接套几分钟肯定搞定,所以索性上传到CSDN上,何时何地都能找到我的范例了。...
  • SQL Server存储过程与自定义函数

    千次阅读 2018-08-13 13:58:12
    SQL Server支持三种例程:用户定义函数存储过程,触发器。   用户定义函数 用户定义函数(UDF,user-defined function)的目的是要封装计算的逻辑处理,有可能需要基于输入的参数,并返回结果。 SQL Server...
  • SQL中的存储过程和函数

    千次阅读 2017-03-01 14:03:46
    本文主要介绍如何创建存储过程和存储函数,以及如何调用、查看、修改、删除存储过程和存储函数等。 创建存储过程和函数  存储程序分为存储过程和存储函数。Mysql创建存储过程和存储函数的语句分别...
  • 代码如下: –函数 CREATE function fn_GetPy(@str nvarchar(4000)) returns nvarchar(4000) –WITH ENCRYPTION as begin declare @intLenint declare @strRetnvarchar(4000) declare @temp nvarchar(100) set @int...
  • NULL 博文链接:https://baobeituping.iteye.com/blog/906087
  • PL/SQL函数存储过程练习 PL/SQL函数存储过程练习
  • 教学人们学会如何利用PL/SQL编程来调用现有的存储过程或存储函数
  • 存储过程的能力大大增强了SQL语言的功能和灵活性。 1.可保证数据的安全性和完整性。 2.通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。 3.通过存储过程可以使相关的动作在一起...
  • 本文主要为大家介绍了sql下用来判断各种资源是否存在的代码,希望对大家学习sql函数及数据库能够有所帮助
  • sqlserver解密存储过程、函数、视图、触发器,mssql解密,WITH ENCRYPTION解密,亲测可用,支持2000、2005、2008、2012、2019...
  • Devart公司出品,旗下的dbForge系列工具相当好用。 这是比DMT的SQLDecryptor更好用的一款解密MSSQL存储过程、函数等对象的工具,值得收藏!
  • --定义变量 a numeric; 方式一: select sqla into a from table1 where b = '1' ; --这是sql语句赋值 ...sql1:= 'select a from table1 where b = ' '1' ' ';...execute sql1 into a; --这是执行存储函数赋值
  • 1. 能够在select等SQL语句中直接使用自定义函数存储过程不行。 2. 自定义函数可以调用其他函数,也可以调用自己(递归) 3. 可以在表列和 CHECK 约束中使用自定义函数来实现特殊列或约束 4. 自定义函数不能有...
  • 如何从 PL/SQL 存储函数返回数组

    千次阅读 2008-09-19 10:23:00
    2006/10/14如何从 PL/SQL 存储函数返回数组完成此方法指南后,您应该能够: 在 Oracle 数据库中创建 VARRAY 使用 oracle.sql.ARRAY 类 从 Java 访问 VARRAY 简介 本文档演示如何从 PL/SQL 函数返回数组并从 java ...
  • Sql Server函数存储过程

    千次阅读 2014-10-31 17:50:16
    SQL Server函数是一种封装一条或多条SQL语句的结构。 SQL Server函数分为系统函数和用户自定义函数两种。 标量值函数:标量值函数的返回值是基本数据类型的单个值或单个值得表达式。 函数体既可以是一条语句,也...
  • SQL存储过程和函数的区别

    千次阅读 2017-09-17 18:25:29
    函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。   函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少   1....
  • 存储过程(Stored Procedure)和存储函数(Stored Function)是在数据库中定义的一些完成特定功能的SQL语句集合,其经编译后存储在数据库中。存储过程和存储函数中可包含流程控制语句及各种SQL语句。它们可以接受参数、...
  • ORACLE 可以把PL/SQL 程序存储在数据库中,并可以在任何地方来运行它。这样就叫存储过程或函数
  • 笔者找到的功能最强大、操作最简单、使用最可靠的数据库解密工具,用于解密的SQL Server2000、2005等版本的存储过程、函数、触发器和视图。 执行连接到数据库后,左边直接列出数据库清单以及每个数据库内的存储过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 385,453
精华内容 154,181
关键字:

sql存储函数