當前位置:首頁 » 服務存儲 » sqludrl支持存儲過程嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqludrl支持存儲過程嗎

發布時間: 2023-05-02 03:35:03

『壹』 sql存儲過程mysql中能用嗎

解答:MySQL支持存儲過程,但它的語法與MS SQL的存在差異滑肢激,所以,MS SQL里的存儲過程不經過修正,在MySQL里是不能用的。

備注提醒:
1、因為它們都使用標準的SQL語法,所以,語法差別不是非常大,語句原則更是基本相同,所以,對於單個的不太復雜的存儲過程來說,進行修正的工作量不會太大。
2、但信襪如果是一個復雜的系統,有幾十甚至上千的存儲過程,一飢稿個一個,一句一句去修正的話,工作量可能就會很大,甚至可怕。

『貳』 SQL Server 存儲過程的幾種常見寫法分析

一、多數指令是相同的,包括創建和修正存儲過程的指令。
二、很多細微的指令有不同,具體如下(不僅):
1 mysql支持enum,和set類型,sql server不支持
2 mysql不支持nchar,nvarchar,ntext類型
3 mysql的遞增語句是AUTO_INCREMENT,而mssql是identity(1,1)
MYSQL:create table basic(id int key auto_increment,name varchar(20));
MSSQL: create table basic(id int identity(1,1) , name varchar(20))
4 msms默認到處表創建語句的默認值表示是((0)),而在mysql裡面是不允許帶兩括弧的
5 mysql需要為表指定存儲類型
6 mssql識別符是[],[type]表示他區別於關鍵字(可選用來包含表名、欄位名),但是mysql卻是 `(重音符,也就是按鍵1左邊的那個符號)
7 mssql支持getdate()方法獲取當前時間日期,但是mysql裡面可以分日期類型和時間類型,獲取當前日期是cur_date(),當前完整時間是 now()函數
8 mssql不支持replace into 語句,但是在最新的sql20008裡面,也支持merge語法
9 mysql支持insert into table1 set t1 = 『』, t2 = 『』 ,但是mssql不支持這樣寫
10 mysql插入多行支持這樣寫 insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1) MSSQL不支持
11 mssql不支持limit語句,是非常遺憾的,只能用top 取代limt 0,N,row_number() over()函數取代limit N,M
12 mysql在創建表時要為每個表指定一個存儲引擎類型,而mssql只支持一種存儲引擎
13 mysql不支持默認值為當前時間的datetime類型(mssql很容易做到),在mysql裡面是用timestamp類型
14 mssql裡面檢查是否有這個表再刪除,需要這樣:
if
exists (select * from dbo.sysobjects where id =
object_id(N'uc_newpm') and OBJECTPROPERTY(id, N'IsUserTable')
= 1)
但是在mysql裡面只需要 DROP TABLE IF EXISTS cdb_forums;
15 mysql支持無符號型的整數,那麼比不支持無符號型的mssql就能多出一倍的最大數存儲
16 mysql不支持在mssql裡面使用非常方便的varchar(max)類型,這個類型在mssql裡面既可做一般數據存儲,也可以做blob數據存儲
17
mysql創建非聚集索引只需要在創建表的時候指定為key就行,比如:KEY displayorder (fid,displayorder)
在mssql裡面必須要:create unique nonclustered index
index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers
(username asc,appid asc)
18 mysql text欄位類型不允許有默認值
19mysql的一個表的總共欄位長度不超過65XXX。
20一個很表面的區別就是mysql的安裝特別簡單,而且文件大小才110M(非安裝版),相比微軟這個龐然大物,安裝進度來說簡直就是.....
21mysql的管理工具有幾個比較好的,mysql_front,和官方那個套件,不過都沒有SSMS的使用方便,這是mysql很大的一個缺點。
22mysql的存儲過程只是出現在最新的版本中,穩定性和性能可能不如mssql。
23 同樣的負載壓力,mysql要消耗更少的CPU和內存,mssql的確是很耗資源。
24php連接mysql和mssql的方式都差不多,只需要將函數的mysql替換成mssql即可。
25mysql支持date,time,year類型,mssql到2008才支持date和time。
26變數賦值
MYsql:變數賦值SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop
MSsql:變數賦值SELECT @min_price=MIN(price),@max_price=MAX(price) FROM shop

三、總的來說,如果是簡單的存儲過程代碼,要修改,不會太難。如果是復雜的系統,要移植會很難很難。

『叄』 sql server存儲過程的參數有哪些類型

SQL Server存儲過程是SQL資料庫的重要組成部分,其中可以用到許多參數。在SQL Server存儲過程中,支持輸入(Input)、輸出參數(Output),也支持返回值參數(ReturnValue)。

返回值參數不是一個形參,而類似於編程中的返回值類型。它都是通過Return語句來返回的,而且在SQL Server中,必須返回INT型的數據,而且很顯然,只能有一個返回值,因為RETURN語句其實是會終止SQL Server存儲過程的。

例子:

ALTERPROCEDURE[dbo].[GetCustomers]
(@rowcountINTOUTPUT)
AS
SELECT[CustomerID]
,[CompanyName]
,[ContactName]
,[ContactTitle]
,[Address]
,[City]
,[Region]
,[PostalCode]
,[Country]
,[Phone]
,[Fax]
FROM[Northwind].[dbo].[Customers]
SET@rowcount=@@rowcount

『肆』 MySql支持不支持觸發器及存儲過程

當然支持了

MySQL沒有一種存儲過程(Stored Procere)語言,這是對習慣於企業級資料庫的程序員的最大限制。多語句SQL命令必須通過客戶虛姿顫方代碼來協調,這種情差敗形是藉助於相當健全的查詢語言和賦予冊蔽客戶端鎖定和解鎖表的能力,這樣才允許的多語句運行。

關於MySql更多 你看看

http://www.dorla.com/info/1302.htm

『伍』 sql server 存儲過程

在執行存儲過程時,我們常遇到執行超時的情況。如果是因為要處理的數據過多,修改流程復雜等原因的話,如以用以下方法解決:在存儲過程的處理工作中加上事務管理:SET TRANSACTION ISOLATION LEVEL REPEATABLE READ --->要這行
BEGIN TRAN /* 這里是程序處理代碼段*/commit transaction
QuitWithRollback:
IF (@@TRANCOUNT > 0)
BEGIN
ROLLBACK TRANSACTION
END 以下是事務相關的知識:BEGIN TRANSACTION--開始事務DECLARE @errorSun INT --定義錯誤計數器SET @errorSun=0 --沒錯為0UPDATE a SET id=232 WHERE a=1 --事務操作SQL語句SET @errorSun=@errorSun+@@ERROR --累計是否有錯UPDATE aa SET id=2 WHERE a=1 --事務操作SQL語句SET @errorSun=@errorSun+@@ERROR --累計是否有錯IF @errorSun<>0 BEGIN PRINT '有錯誤,回滾'ROLLBACK TRANSACTION--事務回滾語句END ELSE BEGIN PRINT '成功,提交'COMMIT TRANSACTION--事務提交語句END1.什麼是事務:事務是一個不可分割的工作邏輯單元,在資料庫系統上執行並發操作時事務是做為最小的控制單元來使用的。他包含的所有資料庫操作命令作為一個整體一起向系提交或撤消,這一組資料庫操作命令要麼都執行,要麼都不執行。2.事務的語句開始事物:BEGIN TRANSACTION 提交事物:COMMIT TRANSACTION 回滾事務:ROLLBACK TRANSACTION3.事務的4個屬性①原子性(Atomicity):事務中的所有元素作為一個整體提交或回滾,事務的個元素是不可分的,事務是一個完整操作。②一致性(Consistemcy):事物完成時,數據必須是一致的,也就是說,和事物開始之前,數據存儲中的數據處於一致狀態。保證數據的無損。③隔離性(Isolation):對數據進行修改的多個事務是彼此隔離的。這表明事務必須是獨立的,不應該以任何方式以來於或影響其他事務。④持久性(Durability):事務完成之後,它對於系統的影響是永久的,該修改即使出現系統故障也將一直保留,真實的修改了資料庫4.事務的保存點 SAVE TRANSACTION 保存點名稱 --自定義保存點的名稱和位置 ROLLBACK TRANSACTION 保存點名稱 --回滾到自定義的保存點 二事例 所謂事務是指一組邏輯操作單元,它使數據從一種狀態變換到另一種狀態。包括四個特性:1、原子性 就是事務應作為一個工作單元,事務處理完成,所有的工作要麼都在資料庫中保存下來,要麼完全回滾,全部不保留2、一致性 事務完成或者撤銷後,都應該處於一致的狀態3、隔離性 多個事務同時進行,它們之間應該互不幹擾.應該防止一個事務處理其他事務也要修改的數據時, 不合理的存取和不完整的讀取數據4、持久性 事務提交以後,所做的工作就被永久的保存下來 示例:創建一個存儲過程,向兩個表中同時插入數據Create proc RegisterUser(@usrName varchar(30),@usrPasswd varchar(30),@age int,@sex varchar(10),@PhoneNum varchar(20),@Address varchar(50) )as beginbegin traninsert into userinfo(userName,userPasswd)values(@usrName,@usrPasswd)if @@error<>0begin rollback tranreturn -1endinsert into userdoc(userName,age,sex,PhoneNumber,Address)values(@Usrname,@age,@sex,@PhoneNum,@Address)if @@error<>0begin rollback tranreturn -1endcommit tranreturn 0end事務的分類按事務的啟動與執行方式,可以將事務分為3類:顯示事務 也稱之為用戶定義或用戶指定的事務,即可以顯式地定義啟動和結束的事務。分布式事務屬於顯示事務自動提交事務默認事務管理模式。如果一個語句成功地完成,則提交該語句;如果遇到錯誤,則回滾該語句。隱性事務當連接以此模式進行操作時,sql將在提交或回滾當前事務後自動啟動新事務。無須描述事務的開始,只需提交或回滾每個事務。它生成連續的事務鏈。一、顯示事務通過begin transacton、commit transaction、commit work、rollback transaction或rollback work等語句完成。1、啟動事務格式:begin tran 事務名或變數 with mark 描述2、結束事務格式:commit tran 事務名或變數 (事務名與begin tran中的事務名一致或commit work 但此沒有參數3、回滾事務 rollback tran 事務名或變數 | savepoint_name | savepoint_variable 或rollback work 說明:清除自事務的起點或到某個保存點所做的所有數據修改4、在事務內設置保存點格式:save tran savepoint_name | savepoint_variable 示例:use bookdbgobegin tran mytraninsert into book values(9,"windows2000',1,22,'出版社')save tran mysavedelete book where book_id=9rollback tran mysavecommit trangoselect * from bookgo可以知道,上面的語句執行後,在book中插入了一筆記錄,而並沒有刪除。因為使用rollback tran mysave 語句將操作回滾到了刪除前的保存點處。5、標記事務格式:with mark 例:使用資料庫標記將日誌恢復到預定義時間點的語句 在事務日誌中置入一個標記。請注意,被標記的事務至少須提交一個更新,以標記該日誌。BEGIN TRAN MyMark WITH MARK UPDATE pubs.dbo.LastLogMark SET MarkTime = GETDATE() COMMIT TRAN MyMark 按照您常用的方法備份事務日誌。BACKUP LOG pubs TO DISK='C:/Backups/Fullbackup.bak' WITH INIT 現在您可以將資料庫恢復至日誌標記點。首先恢復資料庫,並使其為接受日誌恢復做好准備。 RESTORE DATABASE pubs FROM DISK=N'C:/Backups/Fullbackup.bak' WITH NORECOVERY 現在將日誌恢復至包含該標記的時間點,並使其可供使用。請注意,STOPAT在資料庫正在執行大容量日誌時禁止執行。 RESTORE LOG pubs FROM DISK=N'C:/Backups/Logbackup.bak' WITH RECOVERY, STOPAT='02/11/2002 17:35:00'5、不能用於事務的操作創建資料庫 create database 修改資料庫 alter database 刪除資料庫 drop database 恢復資料庫 restore database 載入資料庫 load database 備份日誌文件 backup log 恢復日誌文件 restore log 更新統計數據 update statitics 授權操作 grant 復制事務日誌 mp tran 磁碟初始化 disk init 更新使用sp_configure後的系統配置 reconfigure二、自動提交事務 sql連接在begin tran 語句啟動顯式事務,或隱性事務模式設置為打開之前,將以自動提交模式進行操作。當提交或回滾顯式事務,或者關閉隱性事務模式時,將返回到自動提交模式。示例: 由於編譯錯誤,使得三個insert都沒執行use testgocreate table testback(cola int primary key ,colb char(3))goinsert into testback values(1,'aaa')insert into testback values(2,'bbb')insert into testback value(3,'ccc')goselect * from testbackgo 沒有任何結果返回三、隱式事務通過 API 函數或 Transact-SQL SET IMPLICIT_TRANSACTIONS ON 語句,將隱性事務模式設置為打開。下一個語句自動啟動一個新事務。當該事務完成時,再下一個 Transact-SQL 語句又將啟動一個新事務。當有大量的DDL 和DML命令執行時會自動開始,並一直保持到用戶明確提交為止,切換隱式事務可以用SET IMPLICIT_TRANSACTIONS 為連接設置隱性事務模式.當設置為 ON 時,SET IMPLICIT_TRANSACTIONS 將連接設置為隱性事務模式。當設置為 OFF 時,則使連接返回到自動提交事務模式 語句包括: alter table insert open create delete revoke drop select fetch truncate table grant update 示例: 下面使用顯式與隱式事務。它使用@@tracount函數演示打開的事務與關閉的事務:use testgoset nocount oncreate table t1(a int)goinsert into t1 values(1)goprint '使用顯式事務'begin traninsert into t1 values(2)print '事務外的事務數目:'+cast(@@trancount as char(5))commint tranprint '事務外的事務數目:'+cast(@@trancount as char(5))goprintgoset implicit_transactions on go print '使用隱式事務'goinsert into t1 values*4)print'事務內的事務數目:'+cast(@@trancount as char(5))commint tran print'事務外的事務數目:'+cast(@@trancount as char(5))go執行結果: 使用顯示事務事務內的事務數目:2 事務外的事務數目:1 使用隱式事務事務內的事務數目:1 事務外的事務數目:0四、分布式事務跨越兩個或多個資料庫的單個sql server中的事務就是分布式事務。與本地事務區別:必須由事務管理器管理,以盡量避免出現因網路故障而導致一個事務由某些資源管理器成功提交,但由另一些資源管理器回滾的情況。 sql server 可以由DTc microsoft distributed transaction coordinator 來支持處理分布式事務,可以使用 BEgin distributed transaction 命令啟動一個分布式事務處理 分二階段:A 准備階段 B 提交階段執行教程:1、sql 腳本或應用程序連接執行啟動分布式事務的sql語句2、執行該語句的sql在為事務中的主控伺服器3、腳本或應用程序對鏈接的伺服器執行分布式查詢,或對遠程伺服器執行遠程存儲過程。4、當執行了分布式查詢或遠程過程調用後,主控伺服器將自動調用msdtc以便登記分布式事務中鏈接的伺服器和遠程伺服器5、當腳本或應用程序發出commit或rollback語句時,主控sql將調用msdtc管理兩階段提交過程,或者通知鏈接的伺服器和遠程伺服器回滾其事務。

『陸』 SQL中存儲過程是干什麼用的

存儲過程是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,它存儲在資料庫中,一次編譯後永久有效,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象。

資料庫存儲過程的實質就是部署在資料庫端的一組定義代碼以及SQL。將常用的或很復雜的工作,預先用SQL語句寫好並用一個指定的名稱存儲起來,那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令。

每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。

(6)sqludrl支持存儲過程嗎擴展閱讀:

SQL中存儲過程優點:

1、重復使用。存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。

2、減少網路流量。存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。

3、安全性。參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。

4、存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。

『柒』 SQL 中存儲過程怎麼使用

一、簡單的儲存過程:

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

『捌』 SQL 存儲過程建立和使用方法

Sql Server的存儲過程是一個被命名的存儲在伺服器上的Transacation-Sql語句集合,是封裝重復性工作的一種方法,它支持用戶聲明的變數、條件執行和其他強大的編程功能。 存儲過程相對於其他的資料庫訪問方法有以下的優點: (1)重復使用。存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。 (2)提高性能。存儲過程在創建的時候就進行了編譯,將來使用的時候不用再重新編譯。一般的SQL語句每執行一次就需要編譯一次,所以使用存儲過程提高了效率。 (3)減少網路流量。存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。 (4)安全性。參數化的存儲過程可以防止SQL注入式的攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。 存儲過程一共分為了三類:用戶定義的存儲過程、擴展存儲過程以及系統存儲過程。 其中,用戶定義的存儲過程又分為Transaction-SQL和CLR兩種類型。 Transaction-SQL 存儲過程是指保存的Transaction-SQL語句集合,可以接受和返回用戶提供的參數。 CLR存儲過程是指對.Net Framework公共語言運行時(CLR)方法的引用,可以接受和返回用戶提供的參數。他們在.Net Framework程序集中是作為類的公共靜態方法實現的。(本文就不作介紹了) 創建存儲過程的語句如下:Code
CREATE { PROC | PROCEDURE } [schema_name.] procere_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ [ OUT [ PUT ]
] [ ,n ]
[ WITH <procere_option> [ ,n ]
[ FOR REPLICATION ]
AS { <sql_statement> [;][ n ] | <method_specifier> }
[;]
<procere_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE_AS_Clause ]

<sql_statement> ::=
{ [ BEGIN ] statements [ END ] }

<method_specifier> ::=
EXTERNAL NAME assembly_name.class_name.method_name [schema_name]: 代表的是存儲過程所屬的架構的名稱 例如: Create Schema yangyang8848
Go
Create Proc yangyang8848.AllGoods
As Select * From Master_Goods
Go 執行:Exec AllGoods 發生錯誤。 執行:Exec yangyang8848.AllGoods 正確執行。 [;Number]: 用於對同名過程進行分組的可選整數。使用一個 DROP PROCEDURE 語句可將這些分組過程一起刪除。 例如: Create Proc S1 ;1
AS
Select * From Master_Goods
Go
Create Proc S1 ;2
As
Select * From Master_Location
Go 創建完畢了兩個存儲過程。它們在同一個組S1里,如果執行Exec S1 則存儲過程默認執行 Exec S1 ;1 。如果我們想得到所有據點信息則需要執行Exec S1 ;2。當我們要刪除存儲過程的時候,只能執行Drop Exec S1 則該組內所有的存儲過程被刪除。 [@ parameter]: 存儲過程中的參數,除非將參數定義的時候有默認值或者將參數設置為等於另一個參數,否則用戶必須在調用存儲過程的時候為參數賦值。 存儲過程最多有2100個參數。 例如: Create Proc yangyang8848.OneGoods
@GoodsCode varchar(10)
As
Select * From Master_Goods Where GoodsCode = @GoodsCode
Go 調用的代碼: Declare @Code varchar(10)
Set @Code = '0004'
Exec yangyang8848.OneGoods @Code 在參數的後邊加入Output 表明該參數為輸出參數。 Create Proc yangyang8848.OneGoods
@GoodsCode2 varchar(10) output,@GoodsCode varchar(10) = '0011'
As
Select * From Master_Goods Where GoodsCode = @GoodsCode
Set @GoodsCode2 = '0005'
Go 調用方法:
Declare @VV2 varchar(10)
Exec yangyang8848.OneGoods @Code out 注意:如果存儲過程的兩個參數一個有默認值一個沒有,那麼我們要把有默認值得放在後邊,不然會出問題哦~~ 細心的朋友,可能看到上邊的語句有一些不同,比如,存儲過程用的是output,而調用語句用的是out。我要告訴您,兩者是一樣的。 [RECOMPILE]:指示資料庫引擎 不緩存該過程的計劃,該過程在運行時編譯。如果指定了 FOR REPLICATION,則不能使用此選項。對於 CLR 存儲過程,不能指定 RECOMPILE。 這個說一個非常好用的函數 OBJECT_ID :返回架構范圍內對象的資料庫對象標識號。 例如:我們創建存儲過程時,可以如下寫代碼 If Object_ID('yangyang8848.OneGoods') Is Not Null
Drop Proc yangyang8848.OneGoods
Go Create Proc yangyang8848.OneGoods
@GoodsCode2 varchar(10) out,@GoodsCode varchar(10) = '0011'
As
Select * From Master_Goods Where GoodsCode = @GoodsCode
Set @GoodsCode2 = '0005'
Go 針對於上邊的這個存儲過程,我們調用以下SQL查詢 Select definition From sys.sql_moles
Where object_id = Object_ID('yangyang8848.OneGoods'); 我們是可以查到結果的。 可是如果我們對該存儲過程加入[ ENCRYPTION ] 那麼你將無法看到任何結果 If Object_ID('yangyang8848.OneGoods') Is Not Null
Drop Proc yangyang8848.OneGoods
Go Create Proc yangyang8848.OneGoods
@GoodsCode2 varchar(10) out,@GoodsCode varchar(10) = '0011' With Encryption
As
Select * From Master_Goods Where GoodsCode = @GoodsCode
Set @GoodsCode2 = '0005'
Go</SPAN> 然後我們查詢 sys.sql_moles 目錄視圖,將返回給你Null。</p> 然後我們執行以下SQL: Exec sp_helptext 'yangyang8848.OneGoods' 你將得到以下結果:The text for object 'yangyang8848.OneGoods' is encrypted. 說到這里你應該明白了,參數[ ENCRYPTION ]:是一種加密的功能, 將 CREATE PROCEDURE 語句的原始文本轉換為模糊格式。模糊代碼的輸出在 SQL Server 2005 的任何目錄視圖中都不能直接顯示。對系統表或資料庫文件沒有訪問許可權的用戶不能檢索模糊文本。但是,可通過 DAC 埠訪問系統表的特權用戶或直接訪問資料庫文件的特權用戶可使用此文本。此外,能夠向伺服器進程附加調試器的用戶可在運行時從內存中檢索已解密的過程。 前兩天寫了一篇關於游標的介紹文章 ,下邊寫一個例子,將游標與存儲過程一起使用上: If Object_ID('dbo.GetMasterGoods') Is Not Null
Drop Proc dbo.GetMasterGoods
Go Create Proc GetMasterGoods
@MyCursor Cursor Varying Output
With Encryption
As
Set @MyCursor = Cursor
For
Select GoodsCode,GoodsName From Master_Goods
Open @MyCursor
Go --下邊建立另外一個存儲過程,用於遍歷游標輸出結果 Create Proc GetAllGoodsIDAndName
As Declare @GoodsCode varchar(18)
Declare @GoodsName nvarchar(20)
Declare @MasterGoodsCursor Cursor
Exec GetMasterGoods @MasterGoodsCursor out
Fetch Next From @MasterGoodsCursor
InTo @GoodsCode,@GoodsName
While(@@Fetch_Status = 0)
Begin
Begin
Print @GoodsCode + ':' + @GoodsName
End
Fetch Next From @MasterGoodsCursor
InTo @GoodsCode,@GoodsName
End
Close @MasterGoodsCursor
Deallocate @MasterGoodsCursor
Go 最後執行Exec GetAllGoodsIDAndName結果為以下內容 0003:品0003
0004:品0004
0005:123123
0006:品0006
0007:品0007
0008:品0008
0009:品0009
0010:品0010
0011:品0011
0012:品0012
0013:品0013
0014:品0014

『玖』 SQL 視圖能否執行存儲過程及視圖是否能定義變數Declare @Date Datetime

視圖和存儲過程是兩種不同的執行,視圖不能執行存儲過程,由於不能執行存儲過程自然也就不能定義變數Declare @Date Datetime

『拾』 SQL Server 2000支持5種類型的存儲過程

1.系統存儲過程 2.本地存儲過程指在用戶數據拆漏塌庫旅圓中創建的存儲過程搜兆。
3.臨時存儲過程 4.遠程存儲過程 5.擴展存儲過程