這個回答是對的
存儲過程的參數是什麼?
下面是未用存儲過程實現的代碼
DECLARE @Date VARCHAR(20)
SET @Date=''
SELECT @Date=CONVERT(VARCHAR(4),DATEPART(YEAR,GETDATE()))+'年'+CONVERT(VARCHAR(2),DATEPART(MONTH,GETDATE()))+'月'+CONVERT(VARCHAR(2),DATEPART(DAY,GETDATE()))+'日'
SELECT @Date AS '當前日期'
② sql資料庫存儲過程
存儲過程的好處覺得就是對數據的操作特別地快,
其實那些sql語句已經在資料庫中編譯過了。
在資料庫中的那些語句就是你要用的sql語句。而那些你要查詢是放進去的變數,被一些相當於佔位副之類的東西,先佔位了。你只要把參數傳進去,告訴他執行那條存儲過程的語句就可以了。
③ SQL存儲過程
樓上說的都不對,這明明是SqlServer的存儲過程,你們卻寫成了Oracle的存儲過程,兩個語法還是有所區別的,應該這樣:
create procere insert_stu
(
@xh varchar(7),
@xm varchar(10),
@xb varchar(2),
@nl tinyint,
@szx varchar(20)
)
as
begin
insert into student values (@xh,@xm,@xb,@nl,@szx);
end
以上,希望對你有所幫助!
④ sql存儲過程是什麼
所有設計優良的 Microsoft® SQL Server™ 2000 應用程序都應當使用存儲過程。不論是否將應用程序的業務邏輯寫入存儲過程都應如此。甚至連沒有業務邏輯組件的標准 Transact-SQL 語句,在用參數打包成存儲過程後也能獲得性能收益。編譯進存儲過程的 Transact-SQL 語句在執行時可省去大量的處理。
存儲過程的另一個優點是客戶端執行請求使用網路的效率比將等效的 Transact-SQL 語句發送到伺服器高。例如,假設應用程序需要將一個大的二進制值插入 image 數據列。為使用 INSERT 語句發送數據,該應用程序必須將該二進制值轉換為字元串(其大小翻倍),然後發送到伺服器。伺服器再將該值轉換回二進制格式以存儲在 image 列中。
相反,應用程序可以創建下列格式的存儲過程:
CREATE PROCEDURE P(@p1 image) AS INSERT T VALUES (@p1)
當客戶端應用程序請求執行過程 P 時,image 參數值將一直以二進制格式發送到伺服器,從而節省處理時間並減少網路流量。
如果 SQL Server 存儲過程中包含業務服務邏輯,因為業務服務邏輯將處理移動到數據,而不是將數據移動到處理,因而存儲過程能提供更大的性能收益。
存儲過程的優點
(1)存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的 運算。
(2) 可保證數據的安全性和完整性。
● 通過存儲過程可以使沒有許可權的用戶在控制之下間接地存取資料庫,從而保證數據的安全。
● 通過存儲過程可以使相關的動作在一起發生,從而可以維護資料庫的完整性。
(3) 再運行存儲過程前,資料庫已對其進行了語法和句法分析,並給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。 由於執行SQL語句的大部分工作已經完成,所以存儲過程能以極快的速度執行。
(4)可以降低網路的通信量。
(5) 使體現企業規則的運算程序放入資料庫伺服器中,以便:
● 集中控制。
● 當企業規則發生變化時在伺服器中改變存儲過程即可,無須修改任何應用程序。企業規則的特點是要經常變化,如果把體現企業規則的運算程序放入應用程序中,則當企業規則發生變化時,就需要修改應用程序工作量非常之大(修改、發行和安裝應用程序)。如果把體現企業規則的 運算放入存儲過程中,則當企業規則發生變化時,只要修改存儲過程就可以了,應用程序無須任何變化。
1.使用企業管理器創建用戶存儲過程
操作步驟如下:
(1)啟動SQL Server企業管理器。
(2)在「控制台根目錄」窗口,展開「SQL Server組」,首先,選擇「資料庫」,然後,選擇「存儲過程」,單擊滑鼠右鍵,打開快捷菜單。
(3)在打開快捷菜單中,選擇「新建存儲過程」菜單命令,進入「存儲過程屬性」窗口。
(4)在「存儲過程屬性」窗口,在文本框中輸入存儲過程代碼,單擊「確定」,結束存儲過程的創建。
2.使用T-SQL語句創建用戶存儲過程
SQL命令格式:
CREATE PROC [ EDURE ] <Procere_name> [ ; Number ]
[ { @parameter Data_type }
[ VARYING ] [ = Default ] [ OUTPUT ]] [ ,...n ]
[ WITH{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }]
[ FOR REPLICATION ]
AS sql_statements
功能:創建一個用戶存儲過程,並保存在資料庫中。
⑤ sql資料庫存儲過程!!!
加引號表示把它轉換為nvarchar數據類型,因為之前是money,不能和nvarchar類型相加,所以需要轉換,如果不加引號會出錯。
⑥ SQL Server如何查看一個資料庫里的存儲過程
仔細研究後在csdn上找到了解決該問題的辦法帖出來給大家共享一下
大致方法是利用傳遞長字元串的形式向存儲過程傳遞一個長字元串。由於sqlserver沒有
splite函數
所以必須自己定義一個splite函數來進行處理
自定義一個函數
create
function
f_splitstr(@sourcesql
varchar(8000),@strseprate
varchar(10))
returns
@temp
table(f1
varchar(100))asbegindeclare
@i
int
set
@sourcesql=rtrim(ltrim(@sourcesql))
set
@i=charindex(@strseprate,@sourcesql)while
@i=1begininsert
@temp
values(left(@sourcesql,@i-1))
set
@sourcesql=substring(@sourcesql,@i+1,len(@sourcesql)-@i)
set
@i=charindex(@strseprate,@sourcesql)endif
@sourcesql<''
insert
@temp
values(@sourcesql)returnend-執行select
*
from
dbo.f_splitstr('1,2,3,4',',')
注:'1,2,3,4'即你所傳遞的字元串
同樣你可以通過
select
cunt(*)
from
dbo.f_splitstr('1,2,3,4',',')
獲得該字元串數組的長度
如果要刪除該函數使用--刪除函數drop
function
fsplit
⑦ 如何創建SQL存儲過程
步驟如下:
在對象資源管理器中,連接到某個資料庫引擎實例,再展開該實例。
展開「資料庫」、sql server存儲過程所屬的資料庫以及「可編程性」。
右鍵單擊「存儲過程」,再單擊「新建存儲過程」。
在「查詢」菜單上,單擊「指定模板參數的值」。
在「指定模板參數的值」對話框中,「值」列包含參數的建議值。接受這些值或將其替換為新值,再單擊「確定」。
在查詢編輯器中,使用過程語句替換 SELECT 語句。
若要測試語法,請在「查詢」菜單上,單擊「分析」。
若要創建sql server存儲過程,請在「查詢」菜單上,單擊「執行」。
若要保存腳本,請在「文件」菜單上,單擊「保存」。接受該文件名或將其替換為新的名稱,再單擊「保存」。
⑧ SQL存儲過程如何調用存儲過程
1、首先先創建一個存儲過程,代碼如圖,存儲過程主要的功能是為表JingYan插入新的數據。
⑨ sql資料庫存儲過程!
表名也是可以作為參數的
因為資料庫里存在一種類型叫表類型,所以就存在表類型的變數
因此和其他的類型的數據一樣,表也是可以作為參數的,我們一般稱這種參數為表值參數
舉個例子
CREATE TABLE [dbo].[tb_Demo_MultiRowsInsert](
[TeamID] int not null primary key identity(101,1),
[PName] [Nvarchar](20) NOT NULL,
[GName] [Nvarchar](20) NOT NULL
)
GO
/*************調用存儲過程插入一個行集******************/
Create Procere CPP_InsertOneRows(
@PName Nvarchar(20)="""",
@GName Nvarchar(20)=""""
)
as
INSERT [dbo].[tb_Demo_MultiRowsInsert] (PName,GName)VALUES(@PName,@GName)
GO
備注一條:sqlserver2008對這種存儲過程的支持更加完善
⑩ 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