当前位置:首页 » 存储配置 » alter存储过程

alter存储过程

发布时间: 2022-07-28 05:15:33

❶ alter的用法

ALTER FULLTEXT INDEX (Transact-sql)
比如说你有一个名为“存储过程1”的存储过程,你用:
ALTER PROCEDURE 存储过程1

AS

BEGIN
SELECT * FROM TABLE1
END
则修改存储过程“存储过程1”的内容为
SELECT * FROM TABLE1

数据库中ALTER 和 UPDATE的区别

一、功能上的区别

1、Alter:修改表结构

例如:

增加表的字段

Alter table test Add(id,int).

2、UPdate:修改表数据

例如:

修改字段id列的值

update test set id=2;

二、本质上的区别

1、Alter是数据定义语言(Data difinition Language),在修改表的结构时,不需要Commit和Rollback。

2、Update是数据数据操作语言(Data manipulation Language),在修改数据值时,需要Commit和Rollback,否则提交的结构无效。

(2)alter存储过程扩展阅读:

数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。例如SQL、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。

数据库最初是在大公司或大机构中用作大规模事务处理的基础。后来随着个人计算机的普及,数据库技术被移植到PC机(Personal Computer,个人计算机)上,供单用户个人数据库应用。

❸ 存储过程中可以使用alter table语句吗

看来你很少用sql啊~你这代码写得~~~先帮你找出几个最大的毛病吧:
1、create proc pro_wlcrk2
@date1 datetime,
@date2 datetime
as
begin
drop table temp_wlcrk
end你这里直接就end了那你过程不就到此结束了?把end移到倒数第二行去!
2、alter table temp_wlcrk add dw_na char(40) 你这里不用指定他为空不为空?
alter table temp_wlcrk add dw_na char(40) not null
3、fetch next from cursor_wldw1 into @cu_no1,@cu_na1 你确定游标的语法没问题?

补充:看来你真是刚用sql,一般涉及到对表结构的处理不提倡在过程中实现!至于你这个测试为啥不成功呢?你这么测试下看看有啥不一样:
create proc pro_addcolumn2
as
begin
if exists (select 1 from sysobjects where name = 'ddd')
drop table ddd
create table ddd ( dd char(4),dd2 char(4) default 0)
insert into ddd(dd,dd2)values ('1','a')
insert into ddd(dd,dd2)values ('2','b')
insert into ddd(dd,dd2)values ('3','c')
alter table ddd add dd3 char(4) null
select * from ddd
end
go
然后你分别执行:
exec pro_addcolumn2

select * from ddd
看看有啥不一样?
这也就是说你过程对表的字段处理当时是没效果的!!!

❹ 怎么写存储过程

一、整体格式。存储过程的格式如下:
CREATE PROCEDURE [creator.]"proc_name" ( /* parameters,... */ )
/* RESULT ( column-name,... ) */
BEGIN
;
END
其中creator是用户名,比如dba;proc_name是你自己起的过程名;后面的参数可有可无,视自己情况定,如果有格式如(a integer,b char(50));再下面的RESULT应该是返回值,这个没用过不知道怎么回事!
二、内容。把这些都写好了可能是这样:
CREATE PROCEDURE dba.myProcere ( @a integer,@b char(50))
BEGIN
;
END
但是这样子还是不能编译的,因为整个过程体是空的,而我学习的结果是过程中至少要有一个SQL语句。所以要这样写才不会出错:
CREATE PROCEDURE dba.myProcere ( a integer,b char(50))
BEGIN
SELECT * FROM MyTable
END
三、语法。
1、分号。在写的过程中最郁闷的问题是分号!最后发现好像是这样:
每一句都要加分号,不管是SQl语句还是其它的什么语句,但是最后保存后最后一句的分号会被自动删除!(我用的是Sybase的Sybase Central)。
2、定义变量。
格式为Declare @varName integer;(注意有分号!)“@”号好像可有可无!
3、SELECT语句。
格式为:
SELECT Count(*) INTO @varName FROM MyTable WHERE id = @a;
4、if语句。
格式为:
if(varName > 0) then
return
end if;(注意还有分号!)
5、循环语句。
格式为:
loop
……
end loop;(注意分号!)
6、设置变量值。
格式为:
set @varName = 10;
set @varName = @varName2;
7、字符串。
Declare myString char(50);
set @myString = 'Hello!';
要用单引号!
8、定义游标。
格式为:
declare MyCursor dynamic scroll cursor for
select …… from …… where ……;
9、打开、使用和关闭游标。
Open MyCursor;
fetch next MyCursor into ……;
Close MyCursor;
10、调用方法。
string ls_name="test"
DECLARE ProcName1 PROCEDURE FOR ProcName2
@wg_wellid=2,@wg_wgid=1,@wg_stringsid=1,@bha_wellid=2,@bha_name=:ls_name;
execute ProcName1 ;
close ProcName1 ;
其中ProcName1 是调用程序中自定义的过程名,ProcName2是数据库中存储过程的名字,下面的传入的参数。

❺ 存储过程类型转换

自己写的么?
1有些地方没必要4个单引号,3个就行,在sql中字符串的拼接语句中要表示1个单引号就得用两个单引号,前一个表示转义的意思,编程语言都有转义一说
2因为是字符串拼接的,而@FormerPrice这些是money类型的,如果不转换,就默认要把字符串转换成money类型了,就会出错。所以得把@FormerPrice之类的转换成字符类型的,存储过程修改如下
ALTER PROCEDURE [dbo].[SearchMerchandise]
@Category varchar(50),
@Brand varchar(50),
@Type varchar(50),
@FormerPrice money,
@LatterPrice money
AS
BEGIN
declare @QueryString varchar(100)
set @QueryString = 'select * from Merchandise where Category = ''' + @Category + ''' and Brand = ''' + @Brand + ''' '
SET NOCOUNT ON;

if @Type<>''
set @QueryString = @QueryString+' and Type=''' +@Type+ ''''
if @FormerPrice<>'' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow between '''+ convert(varchar(20),@FormerPrice) + ''' and ''' + convert(varchar(20),@LatterPrice) + ''''
if @FormerPrice<>'' and @LatterPrice=''
set @QueryString = @QueryString+' and PriceNow >=''' + convert(varchar(20),@FormerPrice) + ''''
if @FormerPrice='' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow <=''' + convert(varchar(20),@LatterPrice) + ''''

exec(@QueryString)
END
因为没有表结果不能进行测试,所以可能会出错,如果出错就把表结果发一下,进行测试

❻ alter什么意思,怎哦用

alter在数据库里面是修改的意思,常用来修改表的相关属性,存储过程,表空间等,例如,给一个表添加某个字段名:
alter table student add name varchar(32) null;

❼ UPDATE 存储过程

先在数据库中创建test表,表中有列名为name,类型为varchar(50)
然后先执行
create procere proc_insert
@name varchar(50)
as
begin
insert into test values(@name)--插入数据
end
go
create procere proc_update
@newname varchar(50),@oldname varchar(50)
as
begin
update test set name=@newname where name=@oldname--更新数据
end
go
--其中proc_insert为存储过程名,可自定义 procere可使用简写proc
上面执行完成后调用存储过程
exec proc_insert '晓华'--将"晓华"添加到test表中
exec proc_update '小明','晓华' --将表中'晓华' 改为'小明',必须与存储过程变量顺序相同
exec proc_update @oldname='小明',@newname='晓华'--与存储过程变量顺序可以不同

drop procere proc_insert 删除存储过程proc_insert.

❽ 创建存储过程是Alter和Create Procere的区别

1、ALTER PROC 期望找到现存的存储过程,而CERATE不是。

2、ALTER PROC 保留了已经建立的存储过程的任何权限。它在系统对象中保留了相同的对象ID并允许保留依赖关系。例如,如果过程A调用过程B,并删除和重新创建了过程B,那么就不能再看到这两者之间的依赖关系。如果使用ALTER,则依赖关系依然存在。

3、ALTER PROC 在其他对象上保留了任何依赖关系的信息,这些对象可以调用修改的存储过程。

如果执行DEOP,然后使用CREATE,这和使用ALTER PROC语句一样,几乎都能得到相同的效果,除了用前一种方法需要再重新建立权限,权限规定了可以使用以及不能使用存储过程的用户。

热点内容
传奇脚本刷怪 发布:2024-10-06 11:57:47 浏览:261
c语言输入小写输出大写 发布:2024-10-06 11:49:57 浏览:361
金立手机服务器异常是什么原因 发布:2024-10-06 11:49:48 浏览:699
python多线程假的 发布:2024-10-06 11:37:09 浏览:723
自己动手构造编译 发布:2024-10-06 11:35:11 浏览:550
c语言编译器win10 发布:2024-10-06 11:33:35 浏览:971
安卓手机里的自动备份是什么 发布:2024-10-06 11:30:16 浏览:714
想买电脑配置要注意哪些 发布:2024-10-06 11:21:50 浏览:541
滴滴云存储 发布:2024-10-06 11:17:37 浏览:767
精通android游戏开发 发布:2024-10-06 11:16:54 浏览:801