當前位置:首頁 » 存儲配置 » 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語句一樣,幾乎都能得到相同的效果,除了用前一種方法需要再重新建立許可權,許可權規定了可以使用以及不能使用存儲過程的用戶。

熱點內容
python按時間排序 發布:2024-10-06 10:02:50 瀏覽:214
安卓收款機下載什麼應用能收款 發布:2024-10-06 09:38:29 瀏覽:1000
java初級工程師面試題 發布:2024-10-06 09:37:49 瀏覽:217
知鳥在哪裡修改密碼 發布:2024-10-06 09:37:10 瀏覽:303
怎麼更改微信錢包密碼 發布:2024-10-06 09:28:08 瀏覽:549
控制中心不支持配置怎麼辦 發布:2024-10-06 09:16:39 瀏覽:811
地暖存儲罐 發布:2024-10-06 09:10:19 瀏覽:580
搭建模型伺服器 發布:2024-10-06 09:05:23 瀏覽:845
java使用類 發布:2024-10-06 09:05:22 瀏覽:931
python圖形界面開發 發布:2024-10-06 08:59:53 瀏覽:747