數據集可以用print的方式返回。
1、創建測試表、插入數據:
createtabletest
(idintnotnull,
namevarchar(10))
insertintotestvalues(1,'張三')
insertintotestvalues(2,'李四')
表裡數據如圖:
❷ 資料庫co升級中是什麼意思
如果你指的是資料庫系統升級,就是將以前的版本的DBMS升級到一個更高的版本,使盯飢你的資料庫用擾則沒起來更安全,穩定,方便。如果你指的是資料庫升級,則是將原來的資料庫文件進行優化更改之後的結果,比如說更改了數緩納據庫中表的結構,修改了視圖,存儲過程,自定義函數,以及修改了數據本身的配置等等。不知你說的是哪一種。這個回答可以嗎?
❸ mysql 存儲過程
你應該在做統計吧,估計你不會的就是mysql存儲過程的語法 我之前也寫過 很是郁悶 我給你一段代碼 是我用mysql寫過的一個存儲過程 你看看 主要是了解裡面的語法 看懂了 你所說的需求並不難
有看不懂的地方一起討論 :
begin
declare tikk datetime ;
declare done int default 0;
declare userid int default 0;
declare moleid int default 0;
declare couid int default 0;
declare mname varchar(255) ;
declare opsid int default 0;
declare c1 cursor for Select I_userID,I_operationID from space_operation_record where status<>0 group by I_userID,I_operationID order by createtime desc;
declare continue handler for sqlstate '02000' set done =1;
set tikk = now();
open c1;
repeat
fetch c1 into userid, opsid;
if not done then
select I_moleID from space_operation where status<>0 and ID=opsid into moleid;
if moleid <> '' then
select Nvc_identification from space_operation where status<>0 and ID=opsid into @identiftion;
if moleid > 0 then
Select Nvc_ename from space_mole where status<>0 and ID=moleid into mname;
else
set mname = 'space';
end if;
create temporary table if not exists sp_tab1(id bigint(20),Nvc_content MEDIUMTEXT,I_obyuID bigint(20),I_tID bigint(20),createtime datetime);
INSERT INTO sp_tab1 Select ID,Nvc_content,I_objectID,I_tmID,createtime from space_operation_record where status<>0 and I_operationID=opsid and I_userID=userid ;
select count(*) from sp_tab1 into couid;
set @ihod = 0;
set @listp = '';
set @listpp = '';
set @content0p = '';
set @content0 = '';
while couid > 0 do
select ID,Nvc_content,I_obyuID,createtime,I_tID into @iok,@conuiy,@objiplk,@crtimhr,@tmids from sp_tab1 where ID > @ihod order by ID asc limit 0,1;
if @iok <> '' then
if mname = 'blog' then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,createtime) VALUES (@iok,userid,@conuiy,@crtimhr,tikk);
elseif mname = 'team' then
if(@identiftion = 'addblog' || @identiftion = 'mdyblog') then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,I_tmID,createtime) VALUES (@iok,userid,@conuiy,@crtimhr,@tmids,tikk);
else
set @listpp = CONCAT(@listpp,CONCAT(@objiplk,','));
set @operarry1p = substring_index(@conuiy,'|',1);
set @operarry2p = substring_index(@conuiy,'|',-1);
set @content0p = CONCAT(@content0p,CONCAT(@operarry2p,SPACE(1)));
set @objlistp = substring(@listpp,1,length(@listpp)-1);
end if;
elseif mname = 'space' then
if(@identiftion = 'headphoto' || @identiftion = 'status') then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,I_tmID,createtime) VALUES (@iok,userid,@conuiy,@crtimhr,@tmids,tikk);
else
set @listppr = CONCAT(@listppr,CONCAT(@objiplk,','));
set @operarry1pr = substring_index(@conuiy,'|',1);
set @operarry2pr = substring_index(@conuiy,'|',-1);
set @content0pr = CONCAT(@content0pr,CONCAT(@operarry2pr,SPACE(1)));
set @objlistpr = substring(@listppr,1,length(@listppr)-1);
end if;
else
set @listp = CONCAT(@listp,CONCAT(@objiplk,','));
set @operarry1 = substring_index(@conuiy,'|',1);
set @operarry2 = substring_index(@conuiy,'|',-1);
set @content0 = CONCAT(@content0,CONCAT(@operarry2,SPACE(1)));
set @objlist = substring(@listp,1,length(@listp)-1);
end if;
set @ihod = @iok;
end if;
set couid = couid -1;
end while;
if @content0 <> '' then
set @contentp = CONCAT(@operarry1,concat('|',@content0));
Select createtime,ID into @uitimej,@IDjok from space_operation_record where status<>0 and I_operationID=opsid order by createtime desc limit 0,1;
if @uitimej <> '' then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,createtime,Nvc_objlist) VALUES(@iok,userid,@contentp,@crtimhr,tikk,@objlist);
end if;
end if;
if @content0p <> '' then
if @identiftion = 'addphoto' then
set @contentp = CONCAT(@operarry1p,CONCAT('|',@content0p));
else
set @contentp = CONCAT(@operarry1p,CONCAT(@content0p,'|'));
end if;
Select createtime,ID into @uitimej,@IDjok from space_operation_record where status<>0 and I_operationID=opsid order by createtime desc limit 0,1;
if @uitimej <> '' then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,createtime,Nvc_objlist,I_tmID) VALUES(@iok,userid,@contentp,@crtimhr,tikk,@objlistp,@tmids);
end if;
end if;
if @content0pr <> '' then
set @contentp = CONCAT(@operarry1p,concat('|',@content0pr));
Select createtime,ID into @uitimej,@IDjok from space_operation_record where status<>0 and I_operationID=opsid order by createtime desc limit 0,1;
if @uitimej <> '' then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,createtime,Nvc_objlist,I_tmID) VALUES(@iok,userid,@contentp,@crtimhr,tikk,@objlistp,@tmids);
end if;
end if;
delete from sp_tab1;
end if;
end if;
until done end repeat;
close c1;
drop temporary table if exists sp_tab1 ;
UPDATE space_operation_play SET status=0;
UPDATE space_operation_display SET status=0;
Select createtime into @ptimes from space_operation_stat where status<>0 order by createtime desc limit 0,1;
if @ptimes <>'' then
create temporary table if not exists sp_tab2(id bigint(20),Nvc_content MEDIUMTEXT,I_userID bigint(20),I_lyuID bigint(20),D_stattime datetime);
INSERT INTO sp_tab2 Select ID,Nvc_content,I_userID,I_tmID,D_stattime from space_operation_stat where status<>0 and createtime=@ptimes order by D_stattime desc limit 0,30;
select count(*) from sp_tab2 into @cou1id;
set @uoj = 0;
while @cou1id > 0 do
select ID,Nvc_content,I_userID,D_stattime,I_lyuID into @io1k,@conui1y,@objipl1k,@crtimh1r,@unlpa from sp_tab2 where ID > @uoj order by ID asc limit 0,1;
if @io1k <> '' then
INSERT INTO space_operation_play(I_statID,Nvc_content,D_stattime,I_userID,Createtime,I_tmID) VALUES (@io1k,@conui1y,@crtimh1r,@objipl1k,now(),@unlpa);
set @uoj = @io1k;
end if;
set @cou1id = @cou1id -1;
end while;
drop temporary table if exists sp_tab2 ;
end if;
end
❹ Sqlserver2005資料庫如何寫帶參數的存儲過程
給褲友你一個我以前做過的例子吧。有什麼不會的可以交流一下
創建一個存儲過程展胡蔽槐示學生成績排名
輸入參數:考試代碼、班級編碼、科目編碼
要求:如果班級為*,則表示所有班級
如果科目為*,則表示所有科目
--存儲過並猛程
if exists(select * from dbo.sysobjects where name='studentpm'and xtype='p')
begin
drop PROCEDURE [studentpm]
end
go
CREATE PROCEDURE studentpm @SCNo varchar(10),@CLNo varchar(10),@CNo varchar(10),@sMsg varchar(200) out
AS
declare @SQL varchar(8000)
Begin
if not exists(select * from Score sc,Class cl,Cource co,Student st
where sc.SNo=st.SNo and sc.CNo=co.CNo and cl.CLNo=st.SClassNo and sc.SCNo=@SCNo)
begin
SET @sMsg='考試代碼不存在'
--print(@sMsg)
return (-1)
end
set @SQL='select st.SName,sc.SCGrade,sc.SCNo from Score sc,Class cl,Cource co,Student st
where sc.SNo=st.SNo and sc.CNo=co.CNo and cl.CLNo=st.SClassNo'
if (@CLNo<>'*')
set @sql=@sql +' and cl.CLNo='''+@CLNo+''''
if @CNo<>'*'
set @sql=@sql +' and co.CNo='''+@CNo+''''
set @sql=@sql+' order by sc.SCGrade desc'
print (@sql)
exec (@sql)
Return 1
End
go
調用:
declare @sMsg varchar(200)
declare @iRtn int
EXEC MyTestDB.DBO.studentpm '003','002','002',@sMsg out
EXEC MyTestDB.DBO.studentpm '003','*','*',@sMsg out
EXEC @iRtn=MyTestDB.DBO.studentpm '004','*','*',@sMsg out
--print(@iRtn)
print(@sMsg)
❺ C#如何調用存儲過程,存儲過程的功能是將數據寫入資料庫中。
SqlConnection SqlCon = new SqlConnection();
string ConnectionString = "Data Source = 123-PC\\SQLEXPRESS;Initial Catalog = EnglishWord_System;Integrated Security = True";
SqlCon.ConnectionString = ConnectionString;
SqlCon.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.CommandText = "LoginSearch";
da.SelectCommand.Connection = SqlCon;
da.SelectCommand.CommandType = System.Data.CommandType.StoredProcere;
SqlParameter Param1 = new SqlParameter("@LoginId",System.Data.SqlDbType.VarChar);
SqlParameter Param2 = new SqlParameter("@Password",System.Data.SqlDbType.VarChar);
SqlParameter Param3 = new SqlParameter("@Result",System.Data.SqlDbType.Int);
Param1.Direction = System.Data.ParameterDirection.Input;
Param2.Direction = System.Data.ParameterDirection.Input;
Param3.Direction = System.Data.ParameterDirection.Output;
Param1.Value = this.LoginName.Text;
Param2.Value = this.PassWord.Password.ToString();
da.SelectCommand.Parameters.Add(Param1);
da.SelectCommand.Parameters.Add(Param2);
da.SelectCommand.Parameters.Add(Param3);
da.SelectCommand.ExecuteNonQuery();
這是我以前做的一段代碼,給你解釋一下:
先創建SqlCon的連接連接到資料庫,string ConnectionString = "Data Source = 123-PC\\SQLEXPRESS;Initial Catalog = EnglishWord_System;Integrated Security = True";也就是包含了資料庫鏈接信息的字元串,Data Source也就是你的伺服器名,這個可以在Sql登陸里看到,Initial Catalog就是你的資料庫的名字,這兩個信息最重要。
然後打開資料庫連接。
da.SelectCommand.CommandText = "LoginSearch"是進行存儲過程的選擇的,引號里的內容就是存儲過程的名稱。
da.SelectCommand.CommandType = System.Data.CommandType.StoredProcere;選擇執行的類型是存儲過程。
然後創建存儲過程中所有用到的變數,標識其數據類型,「@」里的的內容就是在sql中創建的變數的名稱。然後對變數進行方向標識,是輸入還是輸出。然後使用變數的Value屬性進行目標值的獲取。最後將這些變數全部添加到創建的命令里,也就是
da.SelectCommand.Parameters.Add(Param1);
da.SelectCommand.Parameters.Add(Param2);
da.SelectCommand.Parameters.Add(Param3);
這幾句。
最後一句是對Command進行執行,也就執行了存儲過程。
也別忘了引用
using System.Data.SqlClient;
using System.Data.Common;
這兩個命名空間
❻ postgresql 存儲過程的事務處理
一個PostgreSQL存儲過程的例子
需求:
給出如下條件進行批處理編排
- 開始日期時間
- 重復間隔(分鍾)
- 重復次數
要求在檔期內重復安排節目播出, 比如: 2003.01.01 08:00 開始每隔240分鍾播出一次, 一共播出100次
資料庫表格(CO_SCHEDULE)
------------------------------
N_PROGID INT
DT_STARTTIME TIMESTAMP
DT_ENDTIME TIMESTAMP
存儲過程的實現:
create table co_schele(n_progid int,dt_starttime timestamp,dt_endtime timestamp);
//創建函數:
create function add_program_time(int4,timestamp,int4,int4,int4) returns bool as '
declare
prog_id alias for $1;
ration_min alias for $3;
period_min alias for $4;
repeat_times alias for $5;
i int;
starttime timestamp;
ins_starttime timestamp;
ins_endtime timestamp;
begin
starttime :=$2;
i := 0;
while i<repeat_times loop
ins_starttime := starttime;
ins_endtime := timestamp_pl_span(ins_starttime,ration_min || ''mins'');
starttime := timestamp_pl_span(ins_starttime,period_min || ''mins'');
insert into co_schele values(prog_id,ins_starttime,ins_endtime);
i := i+1;
end loop;
if i<repeat_times then
return false;
else
return true;
end if;
end;
'language 'plpgsql';
//執行函數:
select add_program_time(1,'2002-10-20 0:0:0','5','60','5');
//查看結果:select * from co_schele;
n_progid | dt_starttime | dt_endtime
----------+------------------------+------------------------
1 | 2002-10-20 00:00:00+08 | 2002-10-20 00:05:00+08
1 | 2002-10-20 01:00:00+08 | 2002-10-20 01:05:00+08
1 | 2002-10-20 02:00:00+08 | 2002-10-20 02:05:00+08
1 | 2002-10-20 03:00:00+08 | 2002-10-20 03:05:00+08
1 | 2002-10-20 04:00:00+08 | 2002-10-20 04:05:00+08
ps:
1.資料庫一載入 plpgsql語言。如沒有,
su - postgres
createlang plpgsql dbname
2.至於返回類型為bool,是因為我不知道如何讓函數不返回值。等待改進。
❼ 在oracle使用存儲過程進行插入數據報錯
你把select 語句挑出來,單獨運行一下,其中某一個數字欄位,應該是有字元的
也就是 to_number的欄位,有非數字的東西。轉不過來。
❽ SQL server簡單的存儲過程問題
你參數就算給默認值了 在數據族納庫里用exec調用的話 也姿穗埋是需要給的。。在程序里調用是跡螞不用給 的。。我在你的存儲過程里也沒見你調用@secName 噶嘛用的。。。用or賦值那個也不可以