當前位置:首頁 » 存儲配置 » sql存儲過程聲明

sql存儲過程聲明

發布時間: 2022-12-14 12:47:50

sql 存儲過程

sql的存儲過程有點類似函數,c#里就像執行sql語句一樣 執行存儲過程就行,

(1)執行一個沒有參數的存儲過程的代碼如下:

SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcere";
da.SelectCommand.CommandType = CommandType.StoredProcere;
然後只要選擇適當的方式執行此處過程,用於不同的目的即可。

(2)執行一個有參數的存儲過程的代碼如下(我們可以將調用存儲過程的函數聲明為ExeProcere(string inputdate)):

SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcere";
da.SelectCommand.CommandType = CommandType.StoredProcere;
(以上代碼相同,以下為要添加的代碼)
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
這樣就添加了一個輸入參數。若需要添加輸出參數:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
若要獲得參儲過程的返回值:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.ReturnValue;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);

㈡ SQL存儲過程提示必須聲明變數@ID(在線等)

CREATE procere getList
@ID int,
as
修改:
CREATE procere getList
@ID int
as
除掉 ,
2005創建成功

㈢ sql 執行存儲過程的參數怎麼聲明

create procere MonthReport
@reportStartDate datetime,@reportEndDate datetime --參數
as
begin transaction
.......

commit transaction
go
------------------------
execute MonthReport '2011-07-01','2011-07-31' --調用存儲過程
go

㈣ sql 存儲過程中 如何使用declare 有的存儲過程聲明了,有的沒有聲明。請回答的詳細點。。謝謝

存儲過程既可以有declare語句,也可以沒有,declare聲明的是一個語句塊,是pl/sql執行的基本單位,

案例:一個基本的declare語句塊

DECLARE
e_invalid_departmentEXCEPTION;--聲明部分,給例外命名
BEGIN
UPDATEdepartments
SETdepartment_name='OracleTechnologyCenter'
WHEREdepartment_id=60;
IFSQL%NOTFOUNDTHEN
RAISEe_invalid_department;--程序執行部分,使用raise語句顯示拋出例外
ENDIF;
COMMIT;
EXCEPTION
WHENe_invalid_departmentTHEN--例外處理部分,處理拋出的例外
DBMS_OUTPUT.PUT_LINE('Nosuchdepartmentid.');
END;

一個簡單的存儲過程案例:

CREATEPROCEDUREquery_emp(p_idINemployees.employee_id%TYPE,
p_nameOUTemployees.last_name%TYPE,
p_salaryOUTemployees.salary%TYPE,
p_commOUTemployees.commission_pct%TYPE)
AUTHIDCURRENT_USERIS
BEGIN
SELECTlast_name,salary,commission_pct
INTOp_name,p_salary,p_comm
FROMemployees
WHEREemployee_id=p_id;
ENDquery_emp;

㈤ SQL存儲過程 必須聲明標量變數問題 資料庫中執行成功,但是當我用程序調用存儲過程時提示「必須聲明標量」

exec('insert into ' +@tablename+ ' values(@caname,@firsturl,@num,@seconrl,@fromurl,@flg)')
修改一下:
exec('insert into ' +@tablename+ ' values('+@caname+ ','+@firsturl+ ','+@num+ ','+@seconrl+ ','+@fromurl+ ','+@flg+ ')')

㈥ 在SQL存儲過程中,如何聲明變數,賦值變數。最好有具體語句配上實例。3Q啦。謝謝各位大俠的幫忙

/*
Sql server 存儲過程中怎麼將變數賦值
*/

--SQL賦值語句
DECLARE @test1 INT
SELECT @test1 = 111
SET @test1 = 222

--SQL函數賦值,假定count()是自定義函數
DECLARE @test2 INT
SELECT @test2 = COUNT(*) FROM sys.sysobjects

--SQL存儲過程賦值,直接傳參處理(類似C語言中的指針嗎)
IF OBJECT_ID('sp_test') IS NOT NULL DROP PROCEDURE sp_test
GO
CREATE PROCEDURE sp_test(@test INT OUTPUT)
AS
BEGIN
SELECT @test = 999
END
GO

DECLARE @test3 INT
EXEC sp_test @test3 OUTPUT
SELECT @test3

DROP PROCEDURE sp_test
GO

㈦ 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

㈧ SQL server2000存儲過程,提示「必須聲明變數@FYear」

存儲過程中肯定使用到了@FYear,而你沒有聲明這個變數。
decalre @FYear 類型
如果你聲明了,那你把語法寫出來吧,肯定是哪個地方不小心寫錯了。
看您貼出的代碼,可不只是這個提示這個錯誤了。
首先你的@sqlstr沒聲明
後邊的set @sqlstr = @sqlstr + 加號的後邊都是字元串的部分,也就是說,存儲過程的兩個參數,都被你引到了單引號當中,那麼就失去了傳值的作用了,成了字元串的一部分了。
還有select @sqlstr=@sqlstr+',coalesce(p.'+FEmpField+',0)' from cz_t_gzfl order by fid,這個返回行數是一行吧?如果是多行,這個沒辦法賦值的。

㈨ 高分求解:SQL存儲過程輸出參數必須聲明標量變數問題

exec('select @totalCount = count(['+ @orderByWhere +']) from '+ @pageTable +' where '+ @pageWhere)

你count 直接count(*) 就可以了...
網上Demo很多你找一個直接用多好

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:600
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:892
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:586
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:771
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:690
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1017
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:261
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:120
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:809
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:719