--表a和表b兩個表之間要存在一種聯系(比如你的會員ID,在這兩個表裡都有吧?)
--所以你可以這樣寫
--select case a.STS when Y then b.臨時地址 else a.聯系地址 end as Address
--from a join b on a.會員ID=b.會員ID
--這樣就可以得到相應的地址了
② 存儲過程的格式問題
第二個正確
③ oracle存儲過程怎麼寫
createorreplaceprocerep_dateas
v_datevarchar2(30);
cursorcuris
selectt.t_date
from(selectto_char(欄位名,'yyyy-mm-ddhh24:mi:ss')t_date,
row_number()over(orderby欄位名desc)rn
from表名)t
wherern<=5;
begin
opencur;
loop
fetchcur
intov_date;
exitwhencur%notfound;
dbms_output.put_line(v_date);
endloop;
end;
表名和欄位名自己替換下
④ 存儲過程中插入語句的格式
不是Insert 語句出錯了。。。是你的傳入的數據類型不對,人家提示的很清楚
「從數據類型 varchar 轉換為 numeric 時出錯」
你把一個varchar類型的數據插入一個numeric類型的欄位 肯定出錯啊
要不強制轉換。。。要不改一下數據
⑤ 存儲過程怎麼寫簡單
可以的
CREATE procere InSertUser
@Username varchar(50),
@UserPwd varchar(50),
@UserDate datetime=getdate,
@Action varchar(50)
as
if(@Action='Create')
BEGIN
INSERT INTO Users
(UserName, UserPwd, UserDate)
VALUES
(
@Username,
@UserPwd,
@UserDate
)
END
else if(@Action='Update')
BEGIN
update xxx set aaa=''
END
GO
通過傳遞@Action的不同值就可以了 這只是個思路 具體實現你可以自己考慮考慮
⑥ 存儲過程怎麼寫啊
//創建存儲過程
CREATE PROCEDURE userData(
IN id INT
)
BEGIN
SELECT * from userdata WHERE userflag = id;
END;
其中IN是傳進去的變數;
drop procere userData;//銷毀這個存儲過程。
call userData(2) //調用存儲過程。
(6)存儲過程格式擴展閱讀:
sql中的存儲過程及相關介紹:
CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號]
[(參數#1,…參數#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行
其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數
(SQL Server 7.0以上版本),參數的使用方法如下:
@參數名數據類型[VARYING] [=內定值] [OUTPUT]。
每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。
[內定值]相當於我們在建立資料庫時設定一個欄位的默認值,這里是為這個參數設定默認值。[OUTPUT]是用來指定該參數是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數值是我們需要輸入的參數。
同時也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時在使用該參數時,必須指定VARYING和OUTPUT這兩個語句。
參考資料來源:網路-儲存過程
⑦ 如何編寫存儲過程
//創建存儲過程
CREATE PROCEDURE userData(
IN id INT
)
BEGIN
SELECT * from userdata WHERE userflag = id;
END;
其中IN是傳進去的變數;
drop procere userData;//銷毀這個存儲過程。
call userData(2) //調用存儲過程。
(7)存儲過程格式擴展閱讀:
sql中的存儲過程及相關介紹:
CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號]
[(參數#1,…參數#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行
其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數
(SQL Server 7.0以上版本),參數的使用方法如下:
@參數名數據類型[VARYING] [=內定值] [OUTPUT]。
每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。
[內定值]相當於我們在建立資料庫時設定一個欄位的默認值,這里是為這個參數設定默認值。[OUTPUT]是用來指定該參數是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數值是我們需要輸入的參數。
同時也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時在使用該參數時,必須指定VARYING和OUTPUT這兩個語句。
參考資料來源:網路-儲存過程
⑧ SQL的存儲過程 語法格式是什麼
這里以創建名為 GetStuCou 的無參數存儲過程為例:
create procere GetStuCou
as
begin //開始存儲過程
select * from Students left join Course c on s.C_S_Id=c.C_Id
end //結束存儲過程
下面是存儲過程的其他用法:
--創建存儲過程
CREATE PROCEDURE PROC(後面接類型)
--定義變數--簡單賦值
declare @a intset @a=5 print @a
--使用select語句賦值
declare @user1 nvarchar(50)
select @user1='張三'
print @user1
declare @user2 nvarchar(50)
--創建臨時表1 create table #DU_User1
(
[ID] [int] NOT NULL,
[Oid] [int] NOT NULL,
);
--定義一個游標
declare user_cur cursor for select ID,Oid,[Login] from ST_User
--打開游標
open user_cur
while @@fetch_status=0 begin
--讀取游標
fetch next from user_cur into @ID,@Oid,@Login
print @ID
--print @Login
end
close user_cur
(8)存儲過程格式擴展閱讀:
創建存儲過程的注意事項:
1、保持事務簡短,事務越短,越不可能造成阻塞。
2、在事務中盡量避免使用循環while和游標,以及避免採用訪問大量行的語句。
3、在啟動事務前完成所有的計算和查詢等操作,避免同一事務中交錯讀取和更新。可以使用表變數預先存儲數據。即存儲過程中查詢與更新使用兩個事務實現。
4、超時會讓事務不執行回滾,超時後如果客戶端關閉連接sqlserver自動回滾事務。如果不關閉,將造成數據丟失,而其他事務將在這個未關閉的連接上執行,造成資源鎖定,甚至伺服器停止響應。
5、避免超時後還可打開事務 SET XACT_ABORT ON統計信息可以優化查詢速度,統計信息准確可以避免查詢掃描,直接進行索引查找。
⑨ sql存儲過程怎麼寫是什麼格式,關鍵字各是什麼意思
USE
[資料庫名]
GO
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
create
procere
[dbo].[表名]
as
begin
--SQL語句
end
--如上語法,新建一個查詢,在查詢窗口中將如上語句輸入,在begin下面把寫好的SQL語句寫入,按F5執行即可。
⑩ 存儲過程怎麼寫···
看看幫助