不把結果轉成一個字元串,直接在後面寫上
在end後加上
and ( select TJNR from ....... ) = ?? 你預計的一個值。
如果說 TJNR 是一個條件串,象 ' and ss = dfs ' 這樣的內容,就需要用動態SQL語句
⑵ SQL的數據存儲過程如何使用
在sql裡面要執行該存儲過程的話就用EXEC
存儲過程名;如果你的存儲過程帶有參數的話在執行的時候還要在存儲過程名的後面加空格在家參數;
例如創建存儲過程:
CREATE
PROCEDURE
getStuInfo
@Id
INT
AS
SELECT
*
FROM
Student
WHERE
Id
=
@Id
執行該存儲過程:
EXEC
getStuInfo
'101'
這段查詢語句的意思是從學生信息表中查詢出編號為101的學生的所有信息
sql資料庫里的存儲過程還可以在c#窗體應用程序里調用,這就涉及到連接資料庫了,如果你需要的話我可以格尼一段代碼示例
⑶ Sql server 存儲過程中怎麼將變數賦值
/*
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嗎
plsql裡面直接使用變數也是使用了綁定變數的。
比如在存儲過程中使用
select empno from emp where empno=p_empno ;
其實使用的也是綁定變數。
在內存中是類似這樣的格式:
SELECT EMPNO FROM EMP WHERE EMPNO=:B1
當然這也和資料庫參數plsql_optimize_level,但是一般都不會關注。
⑹ sql資料庫中的自定義函數可以調用存儲過程
1)自定義函數中不能調用存儲過程,如果調用了,函數可以順利創建,但是調用函數會出錯
2)自定義函數中不能創建表,刪除表,插入表數據
解決辦法:
可以先把存儲過程返回的結果插入到臨時表,然後在函數里調用臨時表,或者運用內置函數,或者使用復雜的聯合查詢實現想要的結果
⑺ SQL的存儲過程問題.在存儲過程裡面能否使用另一個存儲過程
當然是調用另一個過程了
可以這樣
create procere proc1 @id char(10) output
as
begin
select @id = id from table
end
這樣調用
declare @id char(10)
exec proc1 @id output--不要掉了output
這樣現在的@id存有proc1生成的數據了
---------------------------------------------
也可以這樣
create procere proc1
as
begin
declare @id char(10)
select @id = id from table
return @id
end
調用時有所區別
declare @id char(10)
exec @id = proc1
⑻ SQL存儲過程如何調用存儲過程
1、首先先創建一個存儲過程,代碼如圖,存儲過程主要的功能是為表JingYan插入新的數據。
⑼ SQL存儲過程中怎樣給變數賦值
exec 是執行存儲過程的命令,不能作為存儲過程名
而且你這個似乎是希望用變數轉換成SQL命令,不是這樣用法的
⑽ sql 存儲過程輸入參數能直接用函數賦值嗎
不能直接用函數賦值
ALTER PROCEDURE [dbo].[prcu_QSToGB]
@QSID uniqueidentifier =『』,
@Map nvarchar(8) = 'A'
BEGIN
set @QSID =dbo.R_AdtRule_Catalogid_1047()
end