大概在三年之前,自己有弄过存储过程,是在oracle的数据库上弄的。
现在项目在ms sql server上了。又有存储过程。
所以需要对这方面进行一个全方面的了解和学习。
1,最基础的存储过程。
从代码解析开始吧。
USE AdventureWorks2008R2;
GO
IF OBJECT_ID ( 'HumanResources.uspGetAllEmployees', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetAllEmployees;
GO
CREATE PROCEDURE HumanResources.uspGetAllEmployees
AS
SET NOCOUNT ON;
SELECT LastName, FirstName, Department
FROM HumanResources.vEmployeeDepartmentHistory;
GO
这个procedure是没有任何意义的。只是做为一个演示。
首先第一句为使用数据库。如果你一个数据库引擎上有多个数据库,那么这个必要的。
go语句之后是一个查询uspGetAllEmployees是否存在。
使用OBJECT_ID ( 'HumanResources.uspGetAllEmployees', 'P' )进行查询。而后面第二个参数为“P”,所表示的意思是查询procedure。
与oracle的不同。 oracle采用是CREATE OR REPLACE。
第二个才是procedure的开始。
他里面其实就是一个很简单的查询语句。
这个procedure既没有输入,也没有输出。
所以没有什么很大的含义。这个值作为一个入门来使用。
ms server 执行动态sql
传参为@tablename,我需要建立一个以传参名的table。
定义
declare @sql varchar(200)='create table '+@tablename+'(id int)'
然后使用
exec @sql
始终执行不成
原因是不能这样定义。
需要分开定义
如:
declare @sql varchar(200)
set @sql='create table'+@tablename+(id int)
exec @sql
这样才能执行成功。
sysobjects中type字段类型解释:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程
数据库存储过程是不支持数组类型的,
如果说对方需要更新一个数组内的所有数据该怎么办呢“?
那么我们采用string到数组的方式,不过这里必须定义一个分割的符号,如“,”。
以下就是一个类似的存储过程
alter PROCEDURE testArray
@ID nvarchar(500)
as
DECLARE @PointerPrev int
DECLARE @PointerCurr int
DECLARE @TId int
Set @PointerPrev=1
while (@PointerPrev < LEN(@ID))
Begin
Set @PointerCurr=CharIndex(',',@ID,@PointerPrev)
if(@PointerCurr>0)
Begin
set @TId=cast(SUBSTRING(@ID,@PointerPrev,@PointerCurr-@PointerPrev) as int)
select @TId
SET @PointerPrev = @PointerCurr+1
End
else
Break
End
--删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除
set @TId=cast(SUBSTRING(@ID,@PointerPrev,LEN(@ID)-@PointerPrev+1) as int)
select @TId
GO
存储过程是在网络上找的。 可以使用
执行方法:
exec testArray @ID='1,2,3,4,5,6,7,8,9'
-----------------------------------------------------------------
对于存储过程报错的问题。
如果你没有进行检测而去直接执行sql,那么会出现异常。
如果你可以获取这个异常信息,
当然我还是建议大家把异常进行捕获。
delcare @msg varchar(200)
delcare @MyError int=@@Error
select top 1 @msg = description from sys.sysmessages
where error = @MyError and msglangid = 2052 --中文描述
分享到:
相关推荐
MSSQLServer还提供了存储过程,这是一种预编译的SQL语句集合,可以封装复杂逻辑并多次调用。通过使用存储过程,可以提高代码复用性,减少网络通信,并提升系统性能。另外,触发器则是一种特殊的存储过程,会在特定的...
在"MsSqlServer示例数据库备份,AdventureWorks2014.bak"中,我们找到了AdventureWorks2014数据库的一个完整备份,这意味着包含了所有表、视图、存储过程、触发器、索引和其他数据库对象的完整信息。这种备份类型通常...
3. **存储过程**:学习如何定义和执行存储过程,这是一种预编译的SQL代码集合,可以提高性能并简化重复任务。 4. **触发器**:理解触发器的工作原理,它们是自动响应数据库中特定事件(如INSERT,UPDATE或DELETE)...
在MSSQLServer环境中,我们还将接触到触发器,这是一种特殊类型的存储过程,会在特定的DML(Data Manipulation Language)操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器有助于保持数据的一致性和完整性。...
这样的课程可能包括对SQL语法的深入学习,数据查询,表的创建,更新和删除,以及可能涉及的更高级主题,如存储过程,触发器,视图和事务处理。 在SQL编程中,基础概念包括: 1. **SQL语法**:SQL(Structured ...
5. **对象浏览**:插件还提供了一个数据库对象浏览器,允许用户直观地查看和导航数据库中的表、视图、存储过程和其他对象,方便在编写SQL时快速定位所需资源。 6. **性能分析**:在编写复杂查询时,插件有时会提供...
6. **存储过程**:存储过程是预编译的SQL语句集合,允许在数据库端封装复杂的业务逻辑。它们可以提高性能,减少网络流量,并提供更好的安全性和可重用性。 7. **事务管理**:SQL中的事务确保数据的一致性和完整性。...
C#结合MsSqlServer数据库构建的餐饮管理系统,为新手提供了一个功能全面、代码简洁的学习平台,同时也为实际的餐饮企业管理提供了高效解决方案。本文将深入探讨这一系统的实现原理和关键功能。 首先,C#是一种面向...
- **存储过程**:一组预编译的T-SQL语句,可视为数据库中的可执行程序,能接受参数,返回结果集,提高性能和安全性。 5. **视图** - **视图**:虚拟表,基于一个或多个表的SELECT语句,提供不同视角的数据访问,...
- `sp_dropuser` 和 `sp_droplogin`:这两个存储过程分别用于删除数据库中的用户和登录。注释表示这些操作在创建用户后并未执行。 - `sp_adduser`:此过程将登录账户添加到特定数据库中,并指定角色。例如,'...
3. 存储过程:预编译的SQL语句集合,提高执行效率。 九、高级特性 1. 触发器:自动执行的程序,响应数据更改事件。 2. 视图:虚拟表,提供不同的数据视图。 3. 分区表:将大表分割成多个物理部分,提升查询性能。 4...
2. **存储过程**:存储过程是一组预编译的T-SQL语句,可以提高代码复用性和安全性。 3. **视图**:视图是虚拟表,提供了一种简化数据访问和保护数据的方法。 4. **XML支持**:SQL Server 2005增强了对XML的支持,...
以上知识点只是SQL Server 2005存储引擎的冰山一角,实际学习过程中,还会涉及到更多的高级特性,如分区视图、XML支持、空间数据处理、全文搜索、性能计数器和性能监视工具等。通过深入理解这些概念,开发者能够更好...
【基于云存储的校园网络硬盘模拟】项目是一个针对高校环境设计的在线存储系统,它旨在模仿云...对于学习和理解云存储系统的设计与实现,以及掌握ASP.NET和MSSQLServer的结合应用,这个毕业设计是一个很好的实践案例。
理解T-SQL语言、索引、存储过程、视图等核心概念对于数据库管理至关重要。 总结,安装Microsoft SQL Server 2005是一个涉及多个步骤的过程,每个环节都需要仔细考虑和配置。通过了解系统需求、安装流程、配置选项...
标题中的“dwr和json完成简单分页-jsp dwr分页(mssqlserver2005)”涉及到的技术栈主要包括Direct Web Remoting (DWR)、JavaScript Object Notation (JSON)、JavaServer Pages (JSP)以及Microsoft SQL Server 2005...
6. **存储过程**:编写和调用存储过程,了解它们如何封装复杂的业务逻辑,并提高查询性能。 7. **索引**:理解索引的工作原理,创建和管理索引,以及如何优化查询性能。 8. **事务和并发控制**:学习事务的ACID...
- **脚本窗口**:用于编写存储过程、函数等数据库对象的脚本。 #### 二、设置主键 - **设置主键的目的**:确保表中的每一行记录具有唯一性,避免重复记录的出现。 - **2.1 设置主键的标识增量** - **概念**:...
- **数据库**:指用于存储和管理数据的系统,本示例专注于SQL数据库,可能使用了关系型数据库管理系统(RDBMS),如Microsoft SQL Server(MSSQLServer)。 - **C#**:是一种面向对象的编程语言,常用于开发Windows...
在对象资源管理器中,你应该能看到Northwind数据库以及其包含的表、视图、存储过程等对象。 6. **学习与实践**:Northwind数据库中的表包括Customers、Employees、Orders、Products等,每个表都有特定的业务含义。...