求教 SQL中常用的Stored Procedure (存储表过程)?推荐者有分!
求教 SQL中常用的Stored Procedure (存储表过程)?
请列举出一些最常用的,它们的意义?
推荐者有分!
问题点数:100、回复次数:11Top
1 楼westwin(浮躁的很)回复于 2002-01-15 15:05:16 得分 0
就是类似于 sp_help的那种Top
2 楼songyangk(小草)回复于 2002-01-15 15:07:51 得分 20
sp_help 查看数据信息
sp_addlogin sp_droplogin 增加、删除login
sp_adduser sp_dropuser 增加、删除login
sp_password 设置密码
sp_attach_db 激活数据库
等等,好多呢,找本书吧。Top
3 楼gmc007(江西的佬表)回复于 2002-01-15 15:11:23 得分 20
sp_helptext
用这个存储过程可以查看存储过程的内容
如:sp_helptext sp_help
==================
其实你应该看看这方面的书,或者SQL SERVER的在线帮助,或者MSDN
Top
4 楼tpProgramer(tp编程者)回复于 2002-01-15 15:14:08 得分 30
存储过程,一般都是自己编写,用于一组对数据库的操作,是一组SQL 语句以及控制语句、变量等等的组合。
例子一个 创建一个表:
CREATE TABLE [dbo].[pch_Train] (
[TrainID] [char] (9) NOT NULL ,
[StartCityID] [char] (3) NOT NULL ,
[TargetCityID] [char] (3) NOT NULL ,
[DaysConsuming] [int] NOT NULL ,
[DepTime] [char] (4) NOT NULL ,
[ArrTime] [char] (4) NOT NULL ,
[TrainNumber] [varchar] (10) NOT NULL ,
[TrainTypeID] [int] NOT NULL ,
[Discount] [int] NULL ,
[AwardNumber] [int] NULL ,
[Brokerage] [money] NULL ,
[ValidDate] [datetime] NULL ,
[Remark] [varchar] (100) NULL ,
[RecordTimestamp] [timestamp] NULL ,
[DeleteFlag] [bit] NULL ,
[CreateDateTime] [datetime] NULL ,
[UpdateDateTime] [datetime] NULL
) ON [PRIMARY]
GO
下面的存储过程对此表进行操作(根据id更新一条记录):
/*============================================*/
create PROCEDURE pch_TrainUpdate
/*修改一条火车标信息*/
(
@TrainID char (9) ,
--@StartCityID char (3) ,
--@TargetCityID char (3) ,
@DaysConsuming int ,
@DepTime char (4) ,
@ArrTime char (4) ,
@TrainNumber varchar (10) ,
@TrainTypeID int ,
@Discount int ,
@AwardNumber int ,
@Brokerage money ,
@ValidDate datetime ,
@Remark varchar (100) ,
@ReturnCode int output,
@RowCount int output
)
AS
set nocount on
Begin Transaction
Update pch_Train
set
--StartCityID=@StartCityID ,
--TargetCityID=@TargetCityID ,
DaysConsuming=@DaysConsuming,
DepTime=@DepTime ,
ArrTime=@ArrTime ,
TrainNumber=@TrainNumber ,
TrainTypeID=@TrainTypeID ,
Discount=@Discount ,
AwardNumber=@AwardNumber ,
Brokerage=@Brokerage ,
ValidDate=@ValidDate ,
Remark=@Remark ,
UpdateDateTime= getdate()
where TrainID=@TrainID
if @@error != 0 or @@rowcount != 1 goto RollbackAndReturn
select * from pch_Train(NOLOCK)
where TrainID = @TrainID
if @@error != 0 or @@rowcount != 1 goto RollbackAndReturn
goto CommitAndReturn
RollbackAndReturn:
rollback transaction
raiserror('更新pch_Train失败', 1,1)
goto returnresultset
CommitAndReturn:
commit Transaction
ReturnResultSet:
set @ReturnCode = @@error
set @RowCount = @@rowcount
return @ReturnCode
GO
Top
5 楼ferrytang(欢迎你)回复于 2002-01-15 15:17:36 得分 15
sp_executesql
执行可以多次重用或动态生成的 Transact-SQL 语句或批处理。Transact-SQL 语句或批处理可以包含嵌入参数。
语法
sp_executesql [@stmt =] stmt
[
{, [@params =] N'@parameter_name data_type [,...n]' }
{, [@param1 =] 'value1' [,...n] }
]
参数
[@stmt =] stmt
包含 Transact-SQL 语句或批处理的 Unicode 字符串,stmt 必须是可以隐式转换为 ntext 的 Unicode 常量或变量。不允许使用更复杂的 Unicode 表达式(例如使用 + 运算符串联两个字符串)。不允许使用字符常量。如果指定常量,则必须使用 N 作为前缀。例如,Unicode 常量 N'sp_who' 是有效的,但是字符常量 'sp_who' 则无效。字符串的大小仅受可用数据库服务器内存限制。
stmt 可以包含与变量名形式相同的参数,例如:
N'SELECT * FROM Employees WHERE EmployeeID = @IDParameter'
stmt 中包含的每个参数在 @params 参数定义列表和参数值列表中均必须有对应项。
[@params =] N'@parameter_name data_type [,...n]'
字符串,其中包含已嵌入到 stmt 中的所有参数的定义。该字符串必须是可以隐式转换为 ntext 的 Unicode 常量或变量。每个参数定义均由参数名和数据类型组成。n 是表明附加参数定义的占位符。stmt 中指定的每个参数都必须在 @params 中定义。如果 stmt 中的 Transact-SQL 语句或批处理不包含参数,则不需要 @params。该参数的默认值为 NULL。
[@param1 =] 'value1'
参数字符串中定义的第一个参数的值。该值可以是常量或变量。必须为 stmt 中包含的每个参数提供参数值。如果 stmt 中包含的 Transact-SQL 语句或批处理没有参数,则不需要值。
n
附加参数的值的占位符。这些值只能是常量或变量,而不能是更复杂的表达式,例如函数或使用运算符生成的表达式。
返回代码值
0(成功)或 1(失败)
Top
6 楼ferrytang(欢迎你)回复于 2002-01-15 15:18:22 得分 15
sp_lock
报告有关锁的信息。
语法
sp_lock [[@spid1 =] 'spid1'] [,[@spid2 =] 'spid2']
参数
[@spid1 =] 'spid1'
是来自 master.dbo.sysprocesses 的 Microsoft® SQL Server™ 进程 ID 号。spid1 的数据类型为 int,默认值为 NULL。执行 sp_who 可获取有关该锁的进程信息。如果没有指定 spid1,则显示所有锁的信息。
[@spid2 =] 'spid2'
是用于检查锁信息的另一个 SQL Server 进程 ID 号。spid2 的数据类型为 int,默认设置为 NULL。spid2 为可以与 spid1 同时拥有锁的另一个 spid,用户还可获取有关它的信息。
说明 sp_who 可含有 0 个、1 个或 2 个参数。这些参数确定存储过程是显示全部、1 个还是 2 个 spid 进程的锁定信息。
返回代码值
0(成功)
Top
7 楼westwin(浮躁的很)回复于 2002-01-15 15:26:54 得分 0
看不懂tpProgramer(tp编程者)者所写的东东,等到明天来结帐Top
8 楼gmc007(江西的佬表)回复于 2002-01-15 15:53:07 得分 0
tpProgramer(tp编程者)者所写的东东
你都看不懂,更证明你应该看看书先!Top
9 楼westwin(浮躁的很)回复于 2002-01-15 15:57:44 得分 0
看懂了,:P,先创建一个表,然后创建存储表过程(里面是一些sql语句对该表进行操作),right?Top
10 楼westwin(浮躁的很)回复于 2002-01-15 16:18:33 得分 0
upupupupupTop
11 楼westwin(浮躁的很)回复于 2002-01-16 08:46:53 得分 0
upupTop




