搜档网
当前位置:搜档网 › sqlserver快速查找所有存储过程中是否包含某字符

sqlserver快速查找所有存储过程中是否包含某字符

sqlserver快速查找所有存储过程中是否包含某字符

--将text替换成你要查找的内容select name from sysobjects o, syscomments s where o.id = s.id and text like'%text%'and o.xtype ='P'

--将text替换成你要查找的内容SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE'%text%'AND ROUTINE_TYPE='PROCEDURE'

SQLServer存储过程返回值总结.

SQLServer 存储过程返回值总结 1. 存储过程没有返回值的情况 (即存储过程语句中没有 return 之类的语句用方法 int count = ExecuteNonQuery(..执行存储过程其返回值只有两种情况 (1假如通过查询分析器执行该存储过程,在显示栏中假如有影响的行数,则影响几行 count 就是几 (2假如通过查询分析器执行该存储过程, 在显示栏中假如显示 ' 命令已成功完成。 ' 则 count = -1;在显示栏中假如有查询结果,则 count = -1 总结:A.ExecuteNonQuery(该方法只返回影响的行数,假如没有影响行数,则该方法的返回值只能是 -1,不会为 0。 B.不论 ExecuteNonQuery(方法是按照 CommandType.StoredProcedure 或者 CommandType.Text 执行, 其效果和 A 一样。 --------------------------------------------------------------------------------------------------------------------------------------------------- 2. 获得存储过程的返回值 --通过查询分析器获得 (1不带任何参数的存储过程 (存储过程语句中含有 return ---创建存储过程 CREATE PROCEDURE testReturn AS return 145 GO ---执行存储过程

DECLARE @RC int exec @RC=testReturn select @RC ---说明 查询结果为 145 (2带输入参数的存储过程 (存储过程语句中含有 return ---创建存储过程 create procedure sp_add_table1 @in_name varchar(100, @in_addr varchar(100, @in_tel varchar(100 as if(@in_name = '' or @in_name is null return 1 else begin insert into table1(name,addr,tel values(@in_name,@in_addr,@in_tel return 0

通过外网连接内网SQLServer服务器方法

通过外网连接内网MS SQL Server服务器的方法! 这二天在研究从外网如何连接到内网的SQL Server服务器上的方法,现已解决!不敢独享,拿出来给大家分享一下(警告:这是其中一种方法,也是对数据风险较大的方法,所以各位朋友要慎重。) 操作设置如下: 1.在内网里的某一台机上安装好操作系统及SQL Server(本人使用的是:Windows Server2003操作系统+SQL Server2000+SQL SP4); 2.在操作系统上桌面的“网上邻居”右击“属性”——>再右击“本地连接”——>“属性”——>选择“高级”——>在Internet连接防火墙里(若是勾先了的)——>“设置”——>添加——>把TCP端口1433及端口UDP=1434排除丢。(若是使用其他防火墙工具的,请把SQL Server 使用的或用户指定的SQL Server端口的阻挡排除丢) 3.在SQL Server服务器的那台机里安装一个“花生壳”客户端软件(本人使用的是http:// www.zy32 https://www.sodocs.net/doc/8410792623.html,/提供的花生壳软件3.1版)并申请一个免费域名(如:https://www.sodocs.net/doc/8410792623.html,)作为远程登录使用。(花生壳的详细用途我在此不作说明,请大家在网上搜索一下相关资料看看便明白) 4.把SQL Server服务器的那台机的IP映射到路由器那里(我使用的阿尔法路由器里自带的映射功能实现的),由于每个人使用的映射设备不同,本人也不多详细说明,请大家参考相关资料。 5.启动SQL服务器及花生壳软件。 6.设置远程登录用户,用SQL Server的sa用户在SQL Server提供的“企业管理器”登录,在登录里设置一测试用户: 设置好用户后,将该Test用户设置为远程登录的用户: “确定”后,把SQL服务器重启一次。

Sqlserver2005远程连接问题

与SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问 服务器。请验证实例名称是否正确并且SQL Server 已配置为允许远程连接。(provider: 命名管道提供程序, error: 40 - 无法打开到SQL Server 的连接) 说明: 执行当前Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关 该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 在与SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且SQL Server 已配置为允许远程连接。(provider: 命名管道提供程序, error: 40 - 无法打开到SQL Server 的连接) 当出现这个问题时,其实很简单,是不同的数据库版本,地连接方法个一样;注意以下红字部分。我以前是用Server=.;database=jtj;User ID=sa;Password= 改成了Data Source=.\\SQLEXPRESS;Initial Catalog=jtj;User ID=sa;Password= 折腾了好久才搞好。 1.开启sql2005远程连接功能,开启办法如下: 配置工具->Sql Server外围应用配置器->服务和连接的外围应用配置器->打开MSSQLSERVER节点下的Database Engine节点,先择“远程连接”,接下建议选择“同 时使用TCP/IP和named pipes”,确定后重启数据库服务就可以了。 2.登陆设置改为:Sql Server 和Windows 身份验证模式,具体设置如下: SQL Server Management Studio管理器->Windows 身份验证连接服务器->对象资源管理器中选择你的数据服务器->右键->属性->安全性->Sql Server 和Windows 身份验证模式选中。 3.设置一个Sql Server方式的用户名和密码,具体设置如下: (1)SQL Server Management Studio管理器->Windows 身份验证连接服务 器->对象资源管理器中选择你的数据服务器->展开服务器上的“安全性”->登陆名-> 在sa帐号上点右键->“选择页”选择常规->更改sa登陆帐号的密码。这样就设置了一个 用户名为sa,密码为:sa123456的用户。 (2)“选择页”选择状态->登陆修改为启用 4.数据库连接字符串 数据库连接字符串有好几种,相信你自己也见过,都被搞晕了 Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456 Data Source=服务器名\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456 Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456 Data Server=.;Initial Catalog=Northwind;User ID=sa;Password=sa123456 Data Source=服务器名;Initial Catalog=Northwind;User ID=sa;Password=sa123456

SqlServer存储过程基本语法

动态语句基本语法 1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_executesqlN'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL declare @fnamevarchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。exec('select ' + @fname + ' from tableName') -- 请注意加号前后的单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fnamevarchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from tableName' exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输出参数 declare @numint, @sqlsnvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @numint, @sqlsnvarchar(4000) set @sqls='select @a=count(*) from tableName ' execsp_executesql @sqls,N'@aint output',@num output select @num 1 :普通SQL语句可以用Exec执行例: Select * from tableName Exec('select * from tableName')

sqlserver链接服务器的方法

sqlserver链接服务器使用方法 分类:database2009-03-30 19:05 3737人阅读评论(2) 收藏举报使用sql语句: exec sp_addlinkedserver @server='serverontest',@provider='sqloledb',@srvproduct='',@datasrc='101.123.10.112' 添加一个链接服务器 使用sql语句: EXEC sp_addlinkedsrvlogin @rmtsrvname = 'serverontest', @useself = 'false', @locallogin = 'sa', @rmtuser = 'sa', @rmtpassword = 'passwordofsa' 添加登录方式 以上两个语句中,@server为服务器的别名,@datasrc为要链接的目标数据库的连接串, @rmtsrvname为别名,@locallogin为本地登录的用户名,@rmtuser和@rmtpassword为要链接的目标数据库的登录用户名和密码 添加完链接服务器之后,可以通过select * from sys.linked_logins 和select * from sys.servers来查看已经添加的链接服务器和登录角色 添加完链接服务器后,使用select * from 别名.库名.dbo.表名来对其中的数据进行查询 删除链接服务器登录映射和链接服务器的方法: exec sp_droplinkedsrvlogin ’serverontest’,’sa’ exec sp_dropserver ’serverontest’ 上文仅仅是添加到sqlserver的链接服务器的方法,关于添加到其它数据库的链接服务器的方法,参见: [c-sharp]view plaincopy 1.一、使用 Microsoft OLE DB Provider For ODBC 链接MySQL 2.安装MySQL的ODBC驱动MyODBC 3.1、为MySQL建立一个ODBC系统数据源,例如:选择数据库为test ,数据源名称为myDSN

SqlServer存储过程的事务模式编写

SQL Server在存储过程中编写事务处理代码的三种方法 SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码。希望能够对您有所帮助。 在编写SQL Server 事务相关的存储过程代码时,经常看到下面这样的写法: begin tran update statement 1 ... update statement 2 ... delete statement 3 ... commit tran 这样编写的SQL存在很大隐患。请看下面的例子: create table demo(id int not null) go begin tran insert into demo values (null) insert into demo values (2) commit tran go 执行时会出现一个违反not null 约束的错误信息,但随后又提示(1 row(s) affected)。我们执行select * from demo 后发现insert into demo values(2) 却执行成功了。这是什么原因呢? 原来SQL Server在发生runtime 错误时,默认会rollback引起错误的语句,而继续执行后续语句。 如何避免这样的问题呢? 有三种方法:

1. 在事务语句最前面加上set xact_abort on set xact_abort on begin tran update statement 1 ... update statement 2 ... delete statement 3 ... commit tran go 当xact_abort 选项为on 时,SQL Server在遇到错误时会终止执行并rollback 整个事务。 2. 在每个单独的DML语句执行后,立即判断执行状态,并做相应处理。 begin tran update statement 1 ... if@@error<>0 begin rollback tran goto labend end delete statement 2 ... if@@error<>0 begin rollback tran goto labend end commit tran labend: go 3. 在SQL Server 2005中,可利用try...catch 异常处理机制。

关于错误编号7311SQLserver链接服务器报错解决办法

SQLSERVER Msg 7311 今天又遇到一个问题,建立一个Linked Server,在Management Studio可以展开它,看到视图,用select竟查不到数据,而且出现错误: Msg 7311, Level 16, State 2, Line 1 Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server "HKSERVER". The provider supports the interface, but returns a failure code when it is used. 查找Microsoft相关说明,有如下说明: 从64 位SQL Server 2005 客户端访问32 位SQL Server 2000 服务器可能会失败 若要从64 位SQL Server 2005 客户端对32 位SQL Server 2000 服务器进行分布式查询,则需要使用SQL Server 2000 SP3 或更高版本。分布式查询包括对您使用sp_addlinkedserver 以及OPENROWSET 和OPENQUERY 函数定义的链接服务器项的引用。另外,必须在SQL Server 2000 SP3 和SP4 服务器上手动升级系统存储过程(也称为目录存储过程)。 如果32 位实例的SQL Server 2000 上的目录存储过程的版本未更新为随此Service Pack 发布的版本,您将收到以下错误消息: "The stored procedure required to complete this operation could not be found on the server. Please contact your system administrator." Msg 7311, Level 16, State 2, Line 1 Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI" for linked server "". The provider supports the interface, but returns a failure code when it is used. 若要解决此问题,则必须对32 位实例的SQL Server 2000 或MSDE 运行该Service Pack 的instcat.sql 脚本。 继续看相关主题如下: 如果要解决这个问题,请在32 位SQL Server 2000 服务器上安装SQL Server 2000 SP3 或SQL Server 2000 SP4;然后,在32 位SQL Server 2000 服务器上手动执行SQL Server 2000 SP3 或SP4 随附的Instcat.sql 脚本。

使用SQLServer2005的链接服务器链接Sybase数据库

使用SQLServer2005的链接服务器链接Sybase数据库 在以前的一篇文章中我讲到了Sybase ASE数据库的安装,接下来本篇就讲一下Sybase数据库与SQL Server2005数据库的同步,准确的说是使用SQLServer2005读取和写入Sybase数据库表。 为什么要这样做拉?因为在项目中有时需要做其他系统的数据接口,而接口中的数据是存放在Sybase数据库中,这个时候就可以使用SQLServer2005中的链接服务器来连接Sybase数据库,在前面我也写过一篇文章讲SQLServer2005与Oracle数据库的同步,大同小异,大家可以参考。闲话休说,言归正传,下面讲一下配置步骤: 1.在SQL Server2005服务器上安装Sybase的驱动,安装界面如图: 2.一直下一步后,到选择安装方式,我们选择自定义安装,在安装选项中一定要勾中ASE Data Provide rs,这就是我们需要的驱动,其他的可选可不选,为了方便测试和管理,其他的选中也没有关系。

3.安装完成后在开始菜单中将出现如下的菜单: 4.点击OLE DB Provider下的Configuation Manager,界面如图:

5.在Data Sources 上右击,选择New Data Source,在弹出的对话框中输入DataSourceName,比如SybaseTest。 6.单击“SetUpDataSource”按钮,系统将弹出链接Sybase数据库的配置对话框,在该窗口中输入Syb as服务器的IP,端口和数据库,如图:

7.单击“Test Connect”按钮,系统将弹出测试链接窗口,在该窗口中输入用户名密码然后单击“Connect”按钮,如果链接成功,将显示Success,说明我们的配置没有问题。 8.单击“确定”按钮,系统回到Configration Manager窗口。如下图,关闭该窗口。

SqlServer 使用存储过程 导出为Excel

SqlServer 使用存储过程导出为Excel 一个脱离office组件的可以将语句结果导出到Excel的过程 --1.执行时所连接的服务器决定文件存放在哪个服务器 [sql]view plain copy print? 1.CREATE PROC ExportFile 2. @QuerySql VARCHAR(max) 3. ,@Server VARCHAR(20) 4. ,@User VARCHAR(20) = 'sa' 5. ,@Password VARCHAR(20) 6. ,@FilePath NVARCHAR(100) = 'c:\ExportFile.csv' 7.AS 8.DECLARE @tmp VARCHAR(50) = '[##Table' + CONVERT(VARCHAR(36),NEWID())+']' 9.BEGIN TRY 10.DECLARE @Sql VARCHAR(max),@DataSource VARCHAR(max)=''; 11.--判断是否为远程服务器 12. IF @Server <> '.'AND @Server <> '127.0.0.1' 13.SET @DataSource = 'OPENDATASOURCE(''SQLOLEDB'',''Data Source='+@Server+';User ID='+@Us er+';Password='+@Password+''').' 14.--将结果集导出到指定的数据库 15.SET @Sql = REPLACE(@QuerySql,' from ',' into '+@tmp+ ' from ' + @DataSource) 16. PRINT @Sql 17.EXEC(@Sql) 18. 19.DECLARE @Columns VARCHAR(max) = '',@Data NVARCHAR(max)='' 20.SELECT @Columns = @Columns + ',''' + name +''''--获取列名(xp_cmdshell导出文件没有列名) 21. ,@Data = @Data + ',Convert(Nvarchar,[' + name +'])'--将结果集所在的字段更新为nvarchar(避 免在列名和数据union的时候类型冲突) 22.FROM tempdb.sys.columns WHERE object_id = OBJECT_ID('tempdb..'+@tmp) 23.SELECT @Data = 'SELECT ' + SUBSTRING(@Data,2,LEN(@Data)) + ' FROM ' + @tmp 24.SELECT @Columns = 'Select ' + SUBSTRING(@Columns,2,LEN(@Columns)) 25.--使用xp_cmdshell的bcp命令将数据导出 26.EXEC sp_configure 'xp_cmdshell',1 27. RECONFIGURE 28.DECLARE @cmd NVARCHAR(4000) = 'bcp "' + @Columns+' Union All ' + @Data+'" queryout ' + @Fi lePath + ' -c' + CASE WHEN RIGHT(@FilePath,4) = '.csv'THEN' -t,'ELSE''END + ' -T' 29. PRINT @cmd 30.exec sys.xp_cmdshell @cmd 31.EXEC sp_configure 'xp_cmdshell',0 32. RECONFIGURE 33.EXEC('DROP TABLE ' + @tmp) 34.END TRY 35.BEGIN CATCH

SQLServer2005无法连接到服务器的解决方法

SQL Server 2005无法连接到服务器的解决方法 无法连接到XX (服务器名)。 其他信息: 在建立与服务器的连接时出错。在连接到SQL Server 2005时,在默认的设 置下SQL Serve不允许进行远程连接可能会导致此失败。(provider: TCP提供程序,error: 0 -由于目标机器积极拒绝,无法连接。)(Microsoft SQL Serve,r 错误: 10061) 有关帮助信息,请单击: http: 解决办法: 在建立与服务器的连接时出错(SQL Server 2005) 在建立与服务器的连接时出错。在连接到SQL Server 2005时,在默认的设置 下SQL Serve不允许进行远程连. SQL Server 2005不允许远程连接解决方法: 做课程设计时,很多学生都遇到这个问题。把解决方法写在这儿,供参 考。 刚刚安装的数据库系统,按照默认安装的话,很可能在进行远程连接时报错,通常是错误: "在连接到SQLServer 2005时在默认的设置下SQL Serve不允许进行远程连接可

能会导致此失败。(provider: 命名管道提供程序, error: 40 -无法打开到SQL Serve的连接)"搜MSDN,上面有一片机器翻译的文章,是在让人难以明白,现在总结如下: 明白了SQL Serve是个网络数据库就可迎刃而解了,简单的分为下面的集中情况。 1. 数据库引擎没有启动。 有两种启动方式: (1)开始->程序-'Microsoft SQL Server 2005->SQL Server 20(外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine单击”服务",在右侧查看是否已启动如果没有启动可单击"启动", 并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动; (2)可打开: 开始->程序-'Microsoft SQL Server 2005-配置工具->SQL Server Configuration Manager,选中SQL Server 200服务中SQL Server(MSSQLSERVE并单击工具栏中的"启动服务"按钮把服务状态改为启动; 使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看"SQL Server 2005配置管理器"中的SQL Server 200啊络配置 ->MSSQLSERVER议中的VIA是否已启用,如果已启用,则把它禁止?然后再执行上述一种方式操作就可以了. 2. 是否已经允许远程连接。 这个部分可以简单的分为4个方面,分别是在SQL Serve上启用远程连 接、启用SQL Serve浏览服务、在Windows防火墙中为SQL Server 200刨建例外和在Windows防火墙中为“SQLBrowse创建例外。

列出SQLServer数据库中所有的存储过程

列出SQLServer数据库中所有的存储过程 Dim cn As rdoConnection Dim ps As rdoPreparedStatement Dim rs As rdoResultset Dim strConnect As String Dim strSQL As String '利用 DSNless 连接到 pubs 数据库 '改变参数以适合你自己的 SQL Server strConnect = "Driver={SQL Server}; Server=myserver; " & "Database=pubs; Uid=sa; Pwd=" Set cn = rdoEnvironments(0).OpenConnection(dsName:="", Prompt:=rdDriverNoPrompt, ReadOnly:=False, Connect:=strConnect) strSQL = "Select https://www.sodocs.net/doc/8410792623.html,,https://www.sodocs.net/doc/8410792623.html,,https://www.sodocs.net/doc/8410792623.html,,sc.length " & "FROM syscolumns sc,master..systypes st,sysobjects so " & "WHERE sc.id in (select id from sysobjects where type ='P')" & " AND so.type ='P' " & "AND sc.id = so.id " & "AND sc.type = st.type " & "AND sc.type <> 39" Set ps = cn.CreatePreparedStatement("MyPs", strSQL) Set rs = ps.OpenResultset(rdOpenStatic) list1.AddItem "SP Name,Param Name,Data Type,Length" While Not rs.EOF list1.AddItem rs(0) & " , " & rs(1) & " , " & rs(2) & " , " & rs(3) rs.MoveNext Wend rs.Close Set rs = Nothing cn.Close Set cn = Nothing 【

客户端连接SQLServer2000无法成功的解决方案

客户端连接SQLServer2000无法成功的解决方案 问题: 客户端连接服务器能ping通,但是就是连不上SQL SERVER 2000数据库,其他客户都能连上就这一台无法连接!防火墙已经关闭,SP3、SP4补丁已经打过,全检查过没问题,系统也重新安装了, 一看ping 服务器IP能否ping通。 这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。 要能从服务器ping 到客户端,再从客户端ping 到服务器都通。 二在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。 如telnet 202.114.100.100 1433 通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。 如果这一步有问题,应该检查以下选项: 1 检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。 2 检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。 3 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。 事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip

Java调用SQLServer存储过程分析

Java调用SQL Server存储过程 Java调用SQL Server的存储过程详解,主要内容: ●使用不带参数的存储过程 ●使用带有输入参数的存储过程 ●使用带有输出参数的存储过程 ●使用带有返回状态的存储过程 ●使用带有更新计数的存储过程 1.使用不带参数的存储过程 使用JDBC 驱动程序调用不带参数的存储过程时,必须使用call SQL 转义序列。不带参数的call 转义序列的语法如下所示: 实例:在SQL Server 2005 AdventureWorks示例数据库中创建以下存储过程: 此存储过程返回单个结果集,其中包含一列数据(由Person.Contact 表中前十个联系人的称呼、名称和姓氏组成)。 在下面的实例中,将向函数传递AdventureWorks示例数据库的打开连接,然后使用executeQuery方法调用GetContactFormalNames存储过程。

2.使用带有输入参数的存储过程 使用JDBC 驱动程序调用带参数的存储过程时,必须结合SQLServerConnection 类的prepareCall方法使用call SQL转义序列。带有IN参数的call转义序列的语法如下所示: 构造call转义序列时,请使用?(问号)字符来指定IN参数。此字符充当要传递给该存储过程的参数值的占位符。可以使用SQLServerPreparedStatement类的setter方法之一为参数指定值。可使用的setter方法由IN参数的数据类型决定。 向setter方法传递值时,不仅需要指定要在参数中使用的实际值,还必须指定参数在存储过程中的序数位置。例如,如果存储过程包含单个IN参数,则其序数值为1。如果存储过程包含两个参数,则第一个序数值为1,第二个序数值为2。 作为调用包含IN参数的存储过程的实例,使用SQL Server 2005 AdventureWorks示例数据库中的uspGetEmployeeManagers存储过程。此存储过程接受名为EmployeeID的单个输入参数(它是一个整数值),然后基于指定的EmployeeID返回雇员及其经理的递归列表。下面是调用此存储过程的Java代码:

SqlServer调用存储过程返回结果集

USE[zhuhaioa7-4] GO /****** Object: StoredProcedure [dbo].[proc_records] Script Date: 12/26/2014 20:31:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure[dbo].[proc_records] as DECLARE@map_table table(r_key varchar(100),r_value varchar(50)) DECLARE@type_id varchar(40) DECLARE@type_name varchar(50) DECLARE@project_id varchar(40) DECLARE@project_name varchar(50) DECLARE@payTypeMoney numeric(16, 2) DECLARE@sumPayTypeMoney numeric(16, 2) BEGIN set@payTypeMoney= 0 set@sumPayTypeMoney= 0 --查询项目列表 DECLARE project_cursor CURSOR for select ep_id,ep_name from AB_engineeringPhase where account_id='2' open project_cursor fetch next from project_cursor into@project_id,@project_name while@@FETCH_STATUS= 0 begin

(完整版)SQLSERVER存储过程大总结

SQLSERVER存储过程使用说明书 引言 首先介绍一下什么是存储过程:存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还可以根据条件执行不同SQL语句,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。 请大家先看一个小例子: create proc query_book as select * from book go --调用存储过程 exec query_book 请大家来了解一下存储过程的语法。 Create PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] 一、参数简介 1、procedure_name 新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。 要创建局部临时过程,可以在 procedure_name 前面加一个编号 符 (#procedure_name),要创建全局临时过程,可以在 procedure_name 前面加两

个编号符 (##procedure_name)。完整的名称(包括 # 或 ##)不能超过 128 个字符。指定过程所有者的名称是可选的。 2、;number 是可选的整数,用来对同名的过程分组,以便用一条 Drop PROCEDURE 语句即可将同组的过程一起除去。例如,名为 orders 的应用程序使用的过程可以命名为 orderproc;1、orderproc;2 等。Drop PROCEDURE orderproc 语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应 在 procedure_name 前后使用适当的定界符。 3、@parameter 过程中的参数。在 Create PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2100 个参数。 使用@符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。 4、data_type 参数的数据类型。所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。不过,cursor 数据类型只能用于 OUTPUT 参数。如果指定的数据类型为 cursor,也必须同时指定 VARYING 和 OUTPUT 关键字。 说明:对于可以是cursor 数据类型的输出参数,没有最大数目的限制。 5、VARYING 指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。 6、default 参数的默认值。如果定义了默认值,不必指定该参数的值即可执行过程。默认值必须是常量或 NULL。如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(%、_、[] 和 [^])。 7、OUTPUT

检查SQLSERVER服务器是否打开

1、检查SQLSERVER服务器是否打开。开始—>microsfto sql server 2005-- 配置工具 2、打开sql server management . 3、打开VS2005,创建一个网站 4、在窗体上创建一个lable和两个按钮,其中一个按钮的text设为“连接服务器”另一个 为的text设为“断开服务器” 5、把数据库的命名空间包含进来: using System.Data; using System.Data.SqlClient; 6、定义全局的连接字符串字段: public static string connstr = @"Data Source=user88\SQLEXPRESS;Initial Catalog=stu;Integrated Security=True"; 7、声明sqlconnection对象如下: public SqlConnection conn; 8、“连接服务器”的按钮的单击事件如下: protected void Button1_Click(object sender, EventArgs e) { conn.Open(); if (conn.State==ConnectionState.Open) { Label1.Text="数据库连接成功"; } } 9、“断开服务器”按钮的的单击事件如下

protected void Button2_Click(object sender, EventArgs e) { conn.Close(); if(conn.State==ConnectionState.Closed) { Label2.Text="数据库已经断开"; } 10、窗体的装入事件Page_Load如下: protected void Page_Load(object sender, EventArgs e) { conn = new SqlConnection(connstr); } 11、完整的代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts;

SqlServer 使用存储过程实现插入或更新语句

SqlServer 使用存储过程实现插入或更新语句 存储过程的功能非常强大,在某种程度上甚至可以替代业务逻辑层, 接下来就一个小例子来说明,用存储过程插入或更新语句。 1、数据库表结构 2、创建存储过程 1Create proc[dbo].[sp_Insert_Student] 2@No char(10), 3@Name varchar(20), 4@Sex char(2), 5@Age int, 6@rtn int output 7as 8declare 9@tmpName varchar(20), 10@tmpSex char(2), 11@tmpAge int 12 13if exists(select*from Student where No=@No) 14begin 15select@tmpName=Name,@tmpSex=Sex,@tmpAge=Age from Student where No=@No 16if ((@tmpName=@Name) and (@tmpSex=@Sex) and (@tmpAge=@Age)) 17begin 18set@rtn=0 19end 20else 21begin 22update Student set Name=@Name,Sex=@Sex,Age=@Age

where No=@No 23set@rtn=2 24end 25end 26else 27begin 28insert into Student values(@No,@Name,@Sex,@Age) 29set@rtn=1 30end 3、调用存储过程 1declare@rtn int 2exec sp_Insert_Student '1101','张三','男',23,@rtn output 3 4if@rtn=0 5print'已经存在相同的。' 6else if@rtn=1 7print'插入成功。' 8else 9print'更新成功'

相关主题