存储过程 IF包含字段判断

CREATE OR REPLACE FUNCTION F_C_GETRES
(RES IN VARCHAR2,
 M_MO_NUMBER IN VARCHAR2,
 M_EMP IN VARCHAR2)
RETURN VARCHAR
IS
L_RES VARCHAR (4000);
BEGIN
IF INSTR(RES,'OK')>0 THEN
  L_RES:=RES||'##1&';
  IF M_MO_NUMBER IS NOT NULL THEN
    IF M_EMP IS NULL THEN
      L_RES:=L_RES||'&'||M_MO_NUMBER;
    ELSE
      L_RES:=L_RES||'&'||M_MO_NUMBER||','||M_EMP;
      END IF;
    END IF;
ELSIF INSTR(RES,'NG')>0 THEN
  L_RES:=RES||'##0&';
ELSE
  L_RES:=RES;
END IF;

RETURN
L_RES;
END F_C_GETRES;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
存储过程的安全及性能优化 存储过程分类  系统存储过程  自定义存储过程  SQL Server使用者编写的存储过程  扩展存储过程  动态链接库(DLL)函数的调用看,主要用于客户端和服务器端之间进行通信  exec master..xp_cmdshell 'dir *.exe' -- 执行目录命令查询[sql2005\sql2008]  exec master..xp_fixeddrives --列出硬盘分区各自可用空间  xp_regwrite根键,子键,值名,值类型,值【sql2008拒绝访问】  写入注册表,例如:  exec master..db.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\run','TestValueName','reg_sz','hello'  xp_regdeletevalue 根键,子键,值名【sql2008拒绝访问】  删除注册表某个值  xp_regdeletekey键,值【sql2008拒绝访问】  删除该键下包括的所有值 xp_cmdshell语法  xp_cmdshell {'command_string'} [,no_output]  command_string是在操作系统命令行解释器上执行的命令符串。command_string数据类型为varchar(255)或者nvarchar(4000),没有默认值  no_output为可选参数,可以控制是否想客户端返回信息  该存储过程一般情况下被禁用的,需要手动开启使用,如下:  exec sp_configure 'show advanced options',1  go   reconfigure  go   exec sp_configure 'xp_cmdshell',1—1表示启用,0表示禁用  go   reconfigure  go 删除xp_cmdshell SQL SERVER200删除xp_cmdshell use master exec sp_dropextendedproc 'xp_cmdshell' go SQL SERVER2005以上禁用xp_cmdshell,但不能删除掉 exec sp_configure 'xp_cmdshell',0 —1表示启用,0表示禁用  go reconfigure --让sp_configurre立即生效  go  exec sp_configure 'show advanced options',0  go   reconfigure  go --注意:SQL SERVER2008考虑安全性很多存储过程直接被拒绝访问 恢复/启用扩展存储过程 SQLServer2000 use master exec sp_addextendedproc xp_cmdshell,'xplog70.dll' go SQL Server2005或SQL Server2008启用xp_cmdshell  exec sp_configure 'show advanced options',1  go   reconfigure  go   exec sp_configure 'xp_cmdshell',1—1表示启用,0表示禁用  go   reconfigure  go 扩展存储过程的定义  扩展存储过程是SQL Server中的另一类存储过程,它是以其它语言编写的外部程序,是以动态链接库(DLL)形式存储在服务器上,最终SQLServer就可以动态加载并执行它们  编写好后使用SQLServer的固定角色sysadmin注册该扩展存储过程,并将执行权限授予其它用户,这个扩展存储过程只能添加到master数据库。  在编写扩展存储过程中可能要用到某些系统存储过程,这些系统存储过程如下: 利用OLE自动化存储过程调用dll 1.创建类库程序集 namespace PB_ExtendProcedure { public class ExtendProcedure { public string SayHi() { return "hello world"; } } } 2.生成动态链接库并注册到系统中 2.1.生成动态链接库使用VS2010命令行工具 使用sn命令生成一个强命名文件: sn -k he
T-SQL中级教程,包括PPT、学习笔记及课后作业,非常经典的教程 --建库之前先建路径的代码 exec xp_cmdshell'mkdir d:\mydata', --也可以用exec xp_cmdshell'md d:\mydata' no_output exec xp_cmdshell'rd d:\mydata' --删除目录 --查看先前建的文件夹是否成功创建 exec xp_cmdshell'dir d:\' ---------------------------------------------------------------------------------------------------------------- /*切换数据库*/ use master go /*开启master表来判断要新建的数据库是否已经存在*/ if exists (select * from sysdatabases where name='stuDB') /*存在就先删除*/ drop database stuDB /*创建数据库*/ create database stuDB /*创建主数据库文件*/ on primary ( name='stuDB_data_1', --数据库逻辑名 filename='d:\mydata\stuDB_data_1.mdf', --数据库路径及名称 size=10mb, --数据库初始大小 maxsize=100mb, --数据库最大大小 filegrowth=15% --数据库增长 ), /*创建次要数据库文件*/ ( name='stuDB_data_2', --数据库逻辑名 filename='d:\mydata\stuDB_data_2.ndf', --数据库路径及名称 size=10mb, --数据库初始大小 maxsize=100mb, --数据库最大大小 filegrowth=15% --数据库增长 ) /*创建日志文件*/ log on ( name='stuDB_log_1', --数据库逻辑名 filename='d:\mydata\stuDB_log_1.LDF', --数据库路径及名称 size=10mb, --数据库初始大小 maxsize=100mb, --数据库最大大小 filegrowth=15% --数据库增长 ), /*创建日次要志文件*/ ( name='stuDB_log_2', --数据库逻辑名 filename='d:\mydata\stuDB_log_2.ldf', --数据库路径及名称 size=10mb, --数据库初始大小 maxsize=100mb, --数据库最大大小 filegrowth=15% --数据库增长 ) /*如果有多个,请用,()来创建*/ /*批处理的结束 go*/ go ---------------------------------------------------------------------------------------------------------------- /*开始建表*/ /*-创建学员信息表-*/ use stuDB --将当前数据库设置为stuDB go --判断要创建的表是否存在,如果存在就删除 if exists(select * from sysobjects where name='stuInfo') drop table stuInfo --建表 create table stuInfo ( stuName varchar(20) not null, --姓名,非空(必填) stuNo char(6) not null, --学号,非空(必填) stuAge int not null, --年龄,INT类型默认为4个节 stuID numeric(18,0), --身份证号 代表18位数,小数位数为0 stuSeat smallint identity(1,1), --座位号,自动编号 起始量为1,自增长1 stuAddress text --住址,允许为空,即可选输入 ) go /*学生成绩表*/ if exists(select * from sysobjects where name='stuMarks') drop table stuMarks create table stuMarks ( examNo char(7) not null, --考号 stuNo char(6) not null, --学号 writtenExam int not null, --笔试成绩 LabExam int not null --机试成绩 ) go --查看表的字段 select * from stuMarks select * from stuInfo ---------------------------------------------------------------------------------------------------------------- /*建约束的格式*/ /** 主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空 唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。 检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束 默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男” 外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的哪列 */ /*添加约束的语法*/ alter table 表名 add constraint 约束名 约束类型 具体的约束说明 /*删除约束的语法*/ alter table 表名 drop constraint 约束名 ---------------------------------------------------------------------------------------------------------------- /*为stuInfo表添加约束*/ alter table stuInfo add constraint PK_stuNo primary key(stuNo) --添加主键约束 alter table stuInfo add constraint UQ_stuId unique(stuId) --添加唯一约束 alter table stuInfo add constraint DF_stuAddress default('地址不详') for stuAddress --添加默认约束 alter table stuInfo add constraint CK_stuAge check(stuAge between 10 and 40) --检查约束 /*为stuMarks表添加约束*/ alter table stuMarks add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo) --添加主外键约束(主键为stuMarks表的stuNo键,外键为stuInfo表的stuNo键) alter table stuMarks add constraint CK_writtenExam check(writtenExam between 0 and 100) --检查约束,成绩只能是0到100之间的数 alter table stuMarks add constraint CK_LabExam check(LabExam between 0 and 100) --检查约束,成绩只能是0到100之间的数 ---------------------------------------------------------------------------------------------------------------- /*安全模型*/ exec --专门用来调用存储过程 exec sp_grantlogin '域名\用户名' --创建window用户 sp_grantdbaccess '登录账户名','数据库用户' --grant授权 访问数据库 grant 权限[on 表名] to 数据库用户 --为用户授权 USE stuDB GO /*--为zhangsanDBUser分配对表stuInfo的select, insert, update权限--*/ GRANT select, insert, update ON stuInfo TO zhangsanDBUser -------------------------------------------------------------------------------------------------------------------- /*第一关:创建SQL登陆账户*/ use master --切换到数据库 exec sp_addlogin 'admin','888888' --创建SQL登陆账户 /*第二关:创建数据库用户*/ --首先切换到要分配权限的数据库 use stuDB --exec sp_grantdbaccess '登陆账户','数据库账户' exec sp_grantdbaccess 'admin','stuDB' --grant授权 访问数据库 /*第三关:为数据库用户分配权限*/ --grant 权限 on 表名 to 数据库用户 grant select on stuInfo to stuDB --为数据库用户名赋予查询权限 --收回查找权限 revoke 权限 on 表名 from public --为用户删除权限 revoke select on stuInfo from stuDB exec sp_revokedbaccess 'stuDB' --删除数据库用户stuDB对数据库的访问权限 exec sp_droplogin 'admin'

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值