添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 判断参数时候有返回值:
    1.if exitsts(参数):缺点 在里面不能直接使用begin end;
    2.if(参数 is null):直接判断是否为空;
    下面这种方法不能判断出空值
    DECLARE @参数 int =0
    if(@参数=0);

  • 有返回值的存储过程:

ALTER PROCEDURE [dbo].[InsertOneUser] 
	@OName varchar(50) =NOTnull,
	@Prefecture varchar(20)= NOTnull,
	@Username varchar(20) =NOTnull,
	@Password varchar(20) =NOTnull
	/*@returnMessage varchar(200) output */
BEGIN
	Declare @sameOId int,
			@Samename nvarchar(50)=N''
	set @sameOId=(select Id from t_Orgnization where Name= @OName)
	if(@sameOId IS null)
	begin
		exec InsertOneOrg @OName ,@Prefecture,0
		/* 插入组织后重新查询组织id*/
		set @sameOId=(select Id from t_Orgnization where Name= @OName)
		if(@sameOId IS null)
		begin
			return -1
			set @returnMessage ='组织列表无此组织,插入新组织失败,插入用户失败'
			print('插入组织失败')*/
		begin
			begin
				insert into t_Users (OId,OName,Name,Password,Permission) values (@sameOId,@OName,@Username,@Password,'admin')
				/* set @returnMessage ='组织列表无此组织,插入新组织成功,插入用户成功'*/
				return 2
	else    /*组织中有重复的*/
	begin
		/*查询用户是否有重名*/
			set @Samename=(select Name from t_Users where Name=@Username)
			if(@Samename IS NULL)
			begin
				insert into t_Users (OId,OName,Name,Password,Permission) values (@sameOId,@OName,@Username,@Password,'admin')
				/*set @returnMessage ='组织列表包含此组织,插入用户成功'*/
				return 1
			begin
				/*set @returnMessage ='组织列表包含此组织,用户名重复,插入失败'*/
				return 0
                    判断参数时候有返回值:1.if exitsts(参数):缺点 在里面不能直接使用begin end;2.if(参数 is null):直接判断是否为空;下面这种方法不能判断出空值DECLARE @参数  int =0if(@参数=0);有返回值的存储过程:ALTER PROCEDURE [dbo].[InsertOneUser] 		@OName varchar(50...
				
逐个表查询数据,查询到数据就直接返回。 如下例子: 依次从 table1、table2、table3 三个表中查询数据,resultCount 默认值为0,把每次查询结果的行数复制给 resultCount,根据条件 IF @resultCount=0 THEN终止还是继续。 临时表主要用来过渡数据,返回查询结果 执行SQLDELIMITER // drop proced
print'notexists' -----------------判断要创建的表名是否存在 ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[表名]')andOBJECTPROPERTY(id,N'IsUserTable')=1) declare @ReportBeginTime varchar(128),--自述开始时间 @ReportEndTime varchar(128),--自述结束时间 @ResBeginTime varchar(128),--答辩开始时间 @ResEndTime varchar(128 procedure add_jobs(id in varchar2, title in varchar2, min_sal in number) is begin insert into jobs (job_id, job_title, min_...  扩展存储过程  动态链接库(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  reconfigure  exec sp_configure 'xp_cmdshell',1—1表示启用,0表示禁用  reconfigure 删除xp_cmdshell SQL SERVER200删除xp_cmdshell use master exec sp_dropextendedproc 'xp_cmdshell' 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' 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