sql server 用什么執行存儲過程語句
執行帶參數的存儲過程的方法如下:
Exec sp_configure 'allow updates',1 --允許更新系統表。
exec *_ChangeObjectOwnerBatch 'OldOwner','dbo'
以上是兩個例子。
SQL Server中執行帶參數的存儲過程的方法是:
EXEC 存儲過程名字 '參數1','參數2',數值參數
EXEC 是一個關鍵字。
字符串參數使用單引號括起來,數值參數不需要使用單引號
調用存儲過程sql 語句怎么寫
CREATE PROCEDURE [dbo].[sp_test]
@id INT
AS
BEGIN
SET NOCOUNT ON;
SELECT @id+10
END
CREATE TABLE #tab
(
ID int
)
INSERT INTO #tab
EXEC sp_test 10
SELECT * FROM #tab
DROP TABLE #tab
如何在SELECT語句中調用存儲過程的結果
在SELECT語句中調用存儲過程的結果:
直接調用好像不可以!不過你可以把存儲過程中的內容插入一張臨時表,然后再從臨時表中調用!
create table table1(a1 int ,a2 int,a3 int)
insert table1
select 1,3,4 union all
select 2,3,4 union all
select 6,7,8 union all
select 9,1,6 union all
select 12,13,16
select * from table1
/*
a1 a2 a3
----------- ----------- -----------
1 3 4
2 3 4
6 7 8
9 1 6
12 13 16
*/
go
--隨便寫個存儲過程
create proc Proc_table1
(@a1 int ,@a2 int, @a3 int)
as
begin
select 2*@a1+3*@a2+@a3
end
go
create table #t(asum int)
declare my_cursor cursor for
select a1,a2,a3 from table1
open my_cursor
declare @a1 int, @a2 int,@a3 int
fetch next from my_cursor into @a1,@a2,@a3
while(@@fetch_status=0)
begin
insert into #t exec Proc_table1 @a1,@a2,@a3 --執行存儲過程
fetch next from my_cursor into @a1,@a2,@a3
end
close my_cursor
deallocate my_cursor
select sum(asum) from #t
/*
179
*/
drop table #t
sql語句如何調用存儲過程返回的參數
我想,你說的應該是如何在SQL語句中如何給存儲過程的參數賦值吧。
例,有一個存儲過程的名稱叫 sp_deptYJ ,其下有個條件參數名為'@where'。
用法:在sql中如何給存儲過程的參數賦值及執行呢?
exec sp_deptYJ ' and * >=''2014/11/01 00:00 '' '
解釋:
exec:執行存儲過程的函數;
sp_deptYJ:存儲過程名;
' and * >=''2014/11/01 00:00 '' ' :參數賦值(注意里面‘的用法)。
用sql寫一個簡單的存儲過程語句
CREATE procedure Sp_select_Time
@Teacher_ID char(12),
@ReplyTime char(20),
@returnTimeVal int output
as
begin
if exists(select *
from
TeacherReply
where Teacher_ID=@Teacher_ID and ReplyTime=@ReplyTime)
set @returnTimeVal=0
else
set @returnTimeVal=1
end
return
GO
調用存儲過程的方法
給你個分頁存儲過程吧 我自己寫的。
ALTER procedure [dbo].[pro_lu_GolfJB_Sele]
@Ps int=10, --頁大小
@Pg int=1 --讀取的頁碼
AS
Declare @Rows int,@Pgs int,@P1 int,@P2 int //定義總行數,總頁數,計算用變量
Declare @t table(I int identity(1,1) not null,g_id int)//定義臨時表
Insert into @t(g_id) select g_id from lu_GolfJB order by g_id desc //將所查詢表數據ID插入臨時表
SELECT @Rows=@@ROWCOUNT //獲取總行數
SELECT @Pgs=@Rows/@Ps //獲取總頁數
IF @Pgs*@Ps<@Rows SELECT @Pgs=@Pgs+1 //判斷總行數是否符合實際行數 不符合則說明頁數有省缺 給頁數+1
IF @Pg>@Pgs SELECT @Pg=@Pgs //判斷傳入頁碼是否超出總頁
IF @Pg<0 select @Pg=1 //判斷傳入頁碼是否小于0
SELECT @P1=(@Pg-1)*@Ps+1,@P2=@Pg*@Ps //@p1是當前頁在臨時表中第一條ID,@p2是最后一條
ID
select Rows=@Rows,Pgs=@Pgs,Pg=@Pg //取得存儲過程返回得第一張表 數據為當前分頁基數
SELECT * FROM *_GolfJB
WHERE g_id IN (SELECT g_id FROM @t WHERE I BETWEEN @P1 AND @P2)
order by g_id desc//取得返回第二張表 數據為實際表數據
/// <summary>
/// 返回執行數據庫查詢結果數據集
/// 該方法適合一次查詢返回多個表的情況。
/// 獲取表的語法:DataTable dt=myDataSet(Sql).Tables[索引或表名]
/// </summary>
/// <param name="Sql">SQL查詢語句。 存儲過程調用SQL語句方法:exec 存儲過程名 參數1,參數2,。。</param>
/// <returns>;返回數據集類型(內含多個表)</returns>
public static DataSet xsyExecSqlDataSet(string Sql)
{
SqlConnection myCnn = getSqlCnn;
*();
SqlDataAdapter myAd = new SqlDataAdapter(Sql, myCnn);
SqlCommandBuilder myBd = new SqlCommandBuilder(myAd);
DataSet myDs = new DataSet();
*(myDs);
*();
*e();
return myDs;
}
這是一個執行數據庫語句方法
調用的時候 DataSet ds = 類名.xsyExecSqlDataSet("exec pro_lu_GolfJB_Sele "+參數1+","+參數2);
*[0]是返回得到得第一張表
*[1]是返回得到得第二張表
oracle 調用存儲過程語句問題
exec P_EXPORTDATA('student1','student');
或是
declare
v_student1 varchar2(20);
v_student varchar2(20);
begin
v_student1:='student1';
v_student:='student';
P_EXPORTDATA(v_student1,v_student);
end;