一、简单的储存过程:
1、创建一个存储过程
create procere GetUsers()
begin
select * from user;
end;12345
2、调用存储过程
call GetUsers();12
3、删除存储过程
drop procere if exists GetUsers;
二、带参数的存储过程
1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;
2、下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出
create procere GetScores(
out minScore decimal(8,2),
out avgScore decimal(8,2),
out maxScore decimal(8,2)
)
begin
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
end;1234567891011
3、调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以@开始) , 如下所示 :
call GetScores(@minScore, @avgScore, @maxScore);12
4、该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量@minScore, @avgScore, @maxScore, 然后即可调用显示该变量的值 :
select @minScore, @avgScore, @maxScore;
5、使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :
create procere GetNameByID(
in userID int,
out userName varchar(200)
)
begin
select name from user
where id = userID
into userName;
end;12345678910
6、调用存储过程 :
call GetNameByID(1, @userName);
select @userName;123
2. SQL存储过程如何调用存储过程
1、首先先创建一个存储过程,代码如图,存储过程主要的功能是为表JingYan插入新的数据。
3. 求把SQL语句转为存储过程
create procere [dbo].[xxxx](@x nvarchar(20),@y int,@z int)
as
前面加这个就可以,XXXX是存储的名字,后面括号内的是参数
4. 将SQL语句转换成存储过程
不要弄些这样的上来,把题目的要求给弄出来就行了。
5. 怎么把普通SQL查询语句改为存储过程
存储过程是一个包含多个SQL查询语句的集合。
例如表格
tt,检索表格所以数据的SQL语句为:
select
*
from
tt
;
下面使用一样的SQL语句来创建一个存储过程proc_test
IF OBJECT_ID (N'PROC_test', N'P') IS NOT NULL
DROP procere PROC_test;
GO
CREATE procere PROC_test
AS
select * from tt
GO这样执行存储过程proc_test
与SQL语句 select
*
from
tt
效果就是完全相同的
6. 如何可以将SQL语句作为参数传到存储过程
将SQL语句作为参数传到存储过程,请参见一下示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--
创建示范存储过程
create
procere
mypro1(@strSql
nvarchar(4000))
as
execute
sp_executesql
@strsql
go
--
创建示范表并插入数据
create
table
test1
(id
int
primary
key,name
nvarchar(50));
insert
into
test1
values(100,'Johnson');
--
将SQL语句作为参数在存储过程里执行
execute
mypro1
'select
*
from
test1;'
--
删除示范对象
drop
table
test1;
drop
procere
mypro1
7. sql2008的存储过程怎么迁移到另外一台sql2008数据库来着
两台电脑的ip肯定是不一样的了,网站连接数据库第一就要知道连接哪里的,表示一个数据库在哪里,一般需要ip地址和通讯端口,你得修改网站的有关程序或配置,使原来连接旧数据库的,改为连接新数据库。
估计创建数据库时,你用的就是sqlserver的缺省端口,需要确认sql2000和sql2008的缺省端口是否一致,如果不一致,在修改网站配置的时候,别落下它,好在两个配置通常紧挨着,也不会轻易被忽略。
8. sql2008的存储过程怎么迁移到另外一台sql2008数据库来着
创建sp的脚本,在目标DB上运行一下。
如果有大量过程,那就使用工具软件来比较、更新。
9. 如何用SQL语句在两个数据库间复制存储过程
建议你还是用企业管理器导出SQL语句然后执行,这样简单些
当然也可以用命令生成脚本,不过命令比较繁,估计你看了就不想用了:
如何用命令生成SQL SERVER脚本
--以下生成整个数据库的SQL脚本,我测试了,相当好用。
--(scptxfr.exe的路径要正确以下是我的路径)
declare @cMd varchar(1000)
set @cmd = 'master.dbo.xp_cmdshell ' +
'''c:\"Microsoft ' +
'SQL Server"' +
'\MSSQL\Upgrade\scptxfr.exe ' +
' /s YourServerName /p YourSAPassword /I /d YourDBName /f ' +
'c:\YourDBName.sql'''
exec (@cmd)
命令行语法:
SCPTXFR /s <服务器> /d <数据库> {[/I] | [/P <密码>]}
{[/F <脚本文件目录>] | [/f <单个脚本文件>]}
/q /r /O /T /A /E /C <CodePage> /N /X /H /G /Y /?
/s — 指示要连接到的源服务器。
/d — 指示要为之编写脚本的源数据库。
/I — 使用集成安全性。
/P — sa 要用的密码。请注意登录 ID 始终为 sa。
若/P不使用或标志后面没有密码,
则将使用空密码。不与 /I 兼容。
/F — 脚本文件应生成到的目录。
这意味着为每个对象分类生成一个文件。
/f — 所有脚本将保存到的单个文件。
不与 /F 兼容。
/q — 在所生成的脚本中使用被引用的标识符。
/r — 为脚本中的对象包括 drop 语句。
/O — 生成 OEM 脚本文件。无法用于 /A 或 /T。
这是默认的行为。
/T — 生成 UNICODE 脚本文件。无法用于 /A 或 /O。
/A — 生成 ANSI 脚本文件。无法用于 /T 或 /O。
/? — 命令行帮助。
/E — 发生错误时停止脚本编写。
默认行为是记录该错误而后继续。
/C — 指示替代服务器 CodePage(代码页)的 CodePage。
/N — 生成 ANSI PADDING。
/X — 编写 SP 和 XP 脚本以分隔文件。
/H — 生成不带首部的脚本文件。(默认: 带首部)。
/G — 使用指定的服务器名称作为所生成的输出文件的前缀(
中的划线)。
/Y — 为“扩展属性”生成脚本(仅对 8.x 服务器有效)。