存儲過程as別名
『壹』 access中的as是什麼意思
ACCESS sql查詢中,如果想換一個不同的欄位名,或想要一個不是由生成欄位的表達式導出的名,又或者由計算表達式得到的原本數據表裡不存在的欄位(例如經分組和聚合函數等得到的匯總信息等),則可使用SQL保留字「AS」為查出來的欄位名另取一個欄位字(列別名);
另外「AS」還可以用作為參與查詢的基礎數據表或中間過渡子查詢另取一個表名(表別名)從而起到減少查詢中的總字元數、提高代碼的邏輯可閱讀性和防止代碼歧義發生等作用。
這里需要指出的是在ACCESS SQL查詢中,為欄位起別名必須使用保留字「AS」,而為表起別名時 「AS」 不是必須的,可以省略掉。
下面SQL查詢例句有助理解SQL保留字「AS」的作用
例一,「AS」 用作起列別名
selectsid,nameas姓名fromstudents;
例二,「AS」 用作起表別名
selecta.name,b.scorefromstudentsasa,scoresasbwherea.sid=b.sid;
此例也可省略 AS,效果一樣
selecta.name,b.scorefromstudentsa,scoresbwherea.sid=b.sid;
『貳』 sql 里 as 里的意思
as 就是給列 表 結果集 起別名
起的別名有很多用處 在鏈表查詢時不起別名最煩
涉及聯表查詢的時候你要指定某表的某列一般情況下是: 表.列 表名有時候又一大堆
起了別名後 就可以寫成 別名.列 因為有的表名字很長 你可以以這種方法給他縮減一些
就不需要再寫那麼一大堆沒用 又佔地形的東西了
在子查詢時 你要在一個查詢結果上再查東西 此時就必須娶個別名
如:
select * from (select * from ysyobjects )as Newtable
另 :
給列起別名可以達到顯示時以別名取代列名的效果
此外還有很多其他作用
如:創建觸發器、過程、函數 都可以用到
在創建存儲過程、視圖時 as的作用是指明存儲過程或者視圖的語句
『叄』 oracle 中 as 用法有哪幾種
as一般用於存儲過程中定義變數前,還有一種用法是給表或者欄位起別名。
1、存儲過程中:
createorreplaceprocerep_test
as--這里的as表示存儲過程中與變數名字的承接
v_begintimevarchar2(20);
v_endtimevarchar2(20);
v_strvarchar2(10);
begin
v_begintime:=to_char(sysdate,'yyyy-mm-ddhh24:mi:ss');
select'badkano'intov_strfromal;
v_endtime:=to_char(sysdate,'yyyy-mm-ddhh24:mi:ss');
dbms_output.put_line('開始時間為:'||v_begintime);
dbms_output.put_line('結束時間為:'||v_endtime);
end;
2、給欄位起別名或給表起別名:
selectempnoas員工號fromempast;
其中as 員工號表示對empno起別名叫員工號,as t表示emp表的別名叫t。
『肆』 oracle 中 as 用法有哪幾種
1、存儲過程中:
create or replace procere p_test
as --這里的as表示存儲過程中與變數名字的承接v_begintimevarchar2(20);v_endtimevarchar2(20);v_strvarchar2(10);beginv_begintime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss');select 'badkano' into v_str fromal;v_endtime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
2、給欄位起別名或給表起別名:
select empno as 員工號 from emp as t;
其中as 員工號表示對empno起別名叫員工號,as t表示emp表的別名叫t。
『伍』 oracle中別名的問題:在臨時表中不能用as嗎
oracle中臨時表有兩種
on commit delete row; --默認選項,在commit的時候將數據刪除
on commit preserve row; --在commit的時候將數據保留,會話結束後自動刪除。
由於第一種是默認值,你的命令裡面沒加選項默認為commit後刪除數據。
而ddl語句(create table 就是一個ddl)發出後,oracle會隱式的提交事務(commit),因此剛剛插入到臨時表的數據被自動刪除了。 這就是你沒查到數據的原因。
改成第二種方式就ok了:
create global temporary table myTable on commit preserve row as select e.empno,e.ename,e.deptno from emp e;
『陸』 存儲過程的觸發器
觸發器是一種特殊類型的存儲過程,它不同於我們前面介紹過的存儲過程。觸發器主要是通過事件進行觸發而被執行的,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如Update、 Insert、 Delete 這些操作時,SQL Server 就會自動執行觸發器所定義的SQL 語句,從而確保對數據的處理必須符合由這些SQL 語句所定義的規則。
觸發器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據的一致性。除此之外,觸發器還有其它許多不同的功能:
(1) 強化約束(Enforce restriction)
觸發器能夠實現比CHECK 語句更為復雜的約束。
(2) 跟蹤變化Auditing changes
觸發器可以偵測資料庫內的操作,從而不允許資料庫中未經許可的指定更新和變化。
(3) 級聯運行(Cascaded operation)。
觸發器可以偵測資料庫內的操作,並自動地級聯影響整個資料庫的各項內容。例如,某個表上的觸發器中包含有對另外一個表的數據操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。
(4) 存儲過程的調用(Stored procere invocation)。
為了響應資料庫更新,觸發器可以調用一個或多個存儲過程,甚至可以通過外部過程的調用而在DBMS(資料庫管理系統)本身之外進行操作。
由此可見,觸發器可以解決高級形式的業務規則或復雜行為限制以及實現定製記錄等一些方面的問題。例如,觸發器能夠找出某一表在數據修改前後狀態發生的差異,並根據這種差異執行一定的處理。此外一個表的同一類型(Insert、 Update、 Delete)的多個觸發器能夠對同一種數據操作採取多種不同的處理。
總體而言,觸發器性能通常比較低。當運行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因為這些表既不在內存中也不在資料庫設備上,而刪除表和插入表總是位於內存中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。 SQL Server 2000 支持兩種類型的觸發器:AFTER 觸發器和INSTEAD OF 觸發器。其中AFTER觸發器即為SQL Server 2000 版本以前所介紹的觸發器。該類型觸發器要求只有執行某一操作(Insert Update Delete) 之後,觸發器才被觸發,且只能在表上定義。可以為針對表的同一操作定義多個觸發器。對於AFTER觸發器,可以定義哪一個觸發器被最先觸發,哪一個被最後觸發,通常使用系統過程sp_settriggerorder 來完成此任務。
INSTEAD OF觸發器表示並不執行其所定義的操作(Insert、 Update、 Delete),而僅是執行觸發器本身。既可在表上定義INSTEAD OF觸發器,也可以在視圖上定義INSTEAD OF 觸發器,但對同一操作只能定義一個INSTEAD OF 觸發器。 Create procere procere_name
[@parameter data_type][output]
[with]{recompile|encryption}
as
sql_statement
解釋:
output:表示此參數是可傳回的
with {recompile|encryption}
recompile:表示每次執行此存儲過程時都重新編譯一次
encryption:所創建的存儲過程的內容會被加密
如:
表book的內容如下
編號 書名 價格
001 C語言入門 $30
002 PowerBuilder報表開發 $52
實例1:查詢表Book的內容的存儲過程
create proc query_book
as
select * from book
go
exec query_book
實例2:
加入一筆記錄到表book,並查詢此表中所有書籍的總金額 Createprocinsert_book@param1char(10),@param2varchar(20),@param3money,@---------加密asinsertintobook(編號,書名,價格)Values(@param1,@param2,@param3)select@param4=sum(價格)frombookgo執行例子:declare@total_pricemoneyexecinsert_book顛','Delphi控制項開發指南',$100,@total_priceoutputprint'總金額為'+convert(varchar,@total_price)go存儲過程的3種傳回值:
1)、以Return傳回整數
2)、以output格式傳回參數
3)、Recordset
傳回值的區別:
output和return都可在批次程式中用變數接收,而recordset則傳回到執行批次的客戶端中。
實例3:
設有兩個表為Proct,Order_,其表內容如下:
Proct
產品編號 產品名稱 客戶訂數
001 鋼筆 30
002 毛筆 50
003 鉛筆 100
Order_
產品編號 客戶名 客戶訂金
001 南山區 $30
002 羅湖區 $50
003 寶安區 $4
請實現按編號為連接條件,將兩個表連接成一個臨時表,該表只含編號.產品名.客戶名.訂金.總金額,
總金額=訂金*訂數,臨時表放在存儲過程中
代碼如下:
Create proc temp_sale
as
select a.產品編號,a.產品名稱,b.客戶名,b.客戶訂金,a.客戶訂數* b.客戶訂金 as總金額
into #temptable from Proct a inner join Order_ b on a.產品編號=b.產品編號-----此處要用別名
if @@error=0
print 'Good'
else
print 'Fail'
go
『柒』 請教各位:Oracle中,存儲過程里as 什麼意思 還是取別名嗎那麼NULL AS PER_ABE 是什麼意思
不知道您全部的語句是什麼,如果單看這個,那麼就是一個固定值的列,這個固定值就是空(NULL),這個列的別名是PER_ABE
例如:SELECT NULL AS NULLCOLUMN FROM DUAL,其實就是選了一個定值,而這個定值是空。AS後邊是把這個定值指定一個列名。
『捌』 存儲過程sql別名怎麼寫
declare @minid varchar(1000)
set @minid='select id as 別名 from a order by id'
exec(@minid)
『玖』 SQL語句中as的作用
sql語句中as的意思是別名,或者說給顯示的結果改名。比如,select
name
as
姓名
from
student.
意思是查詢student表中的name欄位,但是在顯示的時候顯示姓名(而不是表中的name)
還比如下面:concat(path,',',id)函數用","把前後欄位【path和id】連接起來形成一個新欄位
改名為fullpath
select
id,catename,path,concat(path,',',id)
as
fullpath
from
likecate
where
1
order
by
fullpath
asc.
(9)存儲過程as別名擴展閱讀:
as
一般用在兩個地方,一個是query的時候,用來重新指定返回的column(列)
名字
如:一個table
有個column叫
id,
我們的query是
select
id
from
table1.
但是如果你不想叫id了,就可以重新命名,如叫
systemID
就可以這樣寫
select
id
as
systemId
from
table1;
還有一個用法就是在create
table
或
procere
的時候,as
是個關鍵字。
例如
create
table
test
as
select
*
from
table1
這時候就會create
一個table
test,他是完全
表table1里的全部數據。
create
procre
name
as
(is)
begin
end;
具體可以參考
如何建立procere。
這個時候
as
和is可以互換。
參考資料:搜狗網路-sql語句
『拾』 在Oracle里,表的別名不用as,列的別名要用as
列的別名也可以不用as,如:select t.a xxx from table t
在Oracle資料庫中,數據表別名是不能加as的,例如:
select a.appname from appinfo a;-- 正確
select a.appname from appinfo as a;-- 錯誤
注釋:這可能是為了防止和Oracle資料庫中的存儲過程中的關鍵字as沖突的問題。