當前位置:首頁 » 存儲配置 » 存儲過程selectas

存儲過程selectas

發布時間: 2023-05-27 09:09:51

⑴ 如何在SELECT語句中調用存儲過程的結果

在SELECT語句中調用存儲過程的結果:
直接調用好像不可以!不過猜沖你可以把存儲過程中的內容插入一張臨時表,然後再從臨時表中調用!

sql">createtabletable1(a1int,a2int,a3int)
inserttable1
select1,3,4unionall
select2,3,4unionall
select6,7,8unionall
select9,1,6unionall
select12,13,16

select*fromtable1
/*
a1a2a3
---------------------------------
134
234
678
916
1213雹做16
*/

go
--隨便寫個存儲過程穗肆殲
createprocProc_table1
(@a1int,@a2int,@a3int)
as
begin
select2*@a1+3*@a2+@a3
end

go
createtable#t(asumint)
declaremy_cursorcursorfor
selecta1,a2,a3fromtable1
openmy_cursor
declare@a1int,@a2int,@a3int
fetchnextfrommy_cursorinto@a1,@a2,@a3
while(@@fetch_status=0)
begin
insertinto#texecProc_table1@a1,@a2,@a3--執行存儲過程
fetchnextfrommy_cursorinto@a1,@a2,@a3
end
closemy_cursor
deallocatemy_cursor
selectsum(asum)from#t
/*
179
*/
droptable#t

⑵ 存儲過程select語句返回的結果如何接收

SET @length=SELECT count(id) FROM Split(@subjectid,',')

改為漏猛乎SELECT @length=count(id) FROM Split(@subjectid,',')

SELECT @article=SELECT a FROM Split(@subjectid,',') WHERE id=@id

改為SELECT @article=a FROM Split(@subjectid,',') WHERE id=@id

SELECT @articlensid=INSERT INTO sourcelib SELECT TITLE FROM sourcelib WHERE NSID =@NSID SELECT @@IDENTITY

改為
INSERT INTO sourcelib SELECT TITLE FROM sourcelib WHERE NSID =@NSID
SELECT @articlensid=@@IDENTITY

你這個基本上都是賦值的錯誤,請知隱參照返悉上面給的修改方法把其他的都修改好後再調試。

⑶ select查詢sql存儲過程的結果

把大的結果當成一個表來用,橋祥有這樣敏談搏的sql語句
比如a表和b表。里邊分別存放1月和2月的數據,侍賣現在要從兩個表裡取id=1的所有數據

select a.* from (select * from a union all select * from b ) as a where id=1

⑷ mysql 創建存儲過程中用到循環,怎麼通過select返回結果集

測試表與測試數據
CREATETABLETestMulToOne(
nameVARCHAR(10),
allTitlesVARCHAR(200)
);
INSERTINTOTestMulToOneVALUES('張三','程序員,系統管理員,網路管理員');
INSERTINTOTestMulToOneVALUES('李四','項目經理,系統分析員');
DELIMITER//
DROPFUNCTIONGetTextCount//
/**********
--獲取字元串中有幾個部分.
**********/
CREATEFUNCTIONGetTextCount(pSourceTextVARCHAR(255),pDivCharCHAR(1))
RETURNSTINYINT
BEGIN
--預期結果.
DECLAREvResultTINYINT;
--當前逗號的位置.
DECLAREvIndexINT;
--前一個逗號的位置.
DECLAREvPrevIndexINT;
--結果的初始值.
SETvResult=1;
--查詢第一個逗號的位置.
SETvIndex=INSTR(pSourceText,pDivChar);
IFvIndex=0THEN
--參數中沒有逗號,直接返回.
RETURNvResult;
ENDIF;
--初始化情況,前一個逗號不存在.
SETvPrevIndex=0;
--循環處理。
WHILEvIndex>0DO
--結果遞增.
SETvResult=vResult+1;
--前一個逗號的位置=當前逗號的位置
SETvPrevIndex=vIndex;
--查詢下一個逗號的位置.
SETvIndex=LOCATE(pDivChar,pSourceText,vPrevIndex+1);
ENDWHILE;
--返回結果.
RETURNvResult;
END;
//

DROPFUNCTIONGetTextValue//
/**********
--獲取字元串中具體某一個部分的數據.
**********/
CREATEFUNCTIONGetTextValue(pSourceTextVARCHAR(255),pDivCharCHAR(1),pIndexTINYINT)
RETURNSVARCHAR(255)
BEGIN
--預期結果.
DECLAREvResultVARCHAR(255);
IFpIndex=1THEN
SELECTSUBSTRING_INDEX(pSourceText,pDivChar,1)INTOvResult;
ELSE
SELECT
REPLACE(
SUBSTRING_INDEX(pSourceText,pDivChar,pIndex),
CONCAT(SUBSTRING_INDEX(pSourceText,pDivChar,pIndex-1),pDivChar),
'')INTOvResult;
ENDIF;

--返回.
RETURNvResult;
END;
//

DELIMITER;

/*
SELECTGetTextCount('程序員,系統管理員,網路管理員',',')ASCo;
SELECT
GetTextValue('程序員,系統管理員,網路管理員',',',1)ASA,
GetTextValue('程序員,系統管理員,網路管理員',',',2)ASB,
GetTextValue('程序員,系統管理員,網路管理員',',',3)ASC;
*/SELECT
t.name,
GetTextValue(t.allTitles,',',MaxNum.No)ASOneTitle
FROM
TestMulToOnet,
(SELECT1NoUNIONALL
SELECT2NoUNIONALL
SELECT3NoUNIONALL
SELECT4NoUNIONALL
SELECT5No)MaxNum
WHERE
GetTextCount(t.allTitles,',')>=MaxNum.No
ORDERBY
t.name;

+------+------------+
|name|OneTitle|
+------+------------+
|張三|系統管理員|
|張三|網路管理員|
|張三|程序員|
|李四|系統分析員|
|李四|項目經理|
+------+------------+
5rowsinset(0.00sec)

⑸ SQLSERVER 存儲過程 查詢語句里有字元串怎麼寫 Set @S='Select '測試SQL' as 測試,a from TBtest';

這樣改即可:

Declare @s nVarchar(max);
--需要執和桐高行的SQL:Select '測試喚尺SQL' as 測試,a from TBtest;
Set @S='Select ''測試輪山SQL'' as 測試,a from TBtest';
exec (@s);

⑹ 怎麼樣寫個select通用的存儲過程

CREATE PROCEDURE [dbo].[--存儲過程名--]
( @PageSize AS integer,--分頁,每頁顯示幾條記錄
@PageNum AS integer,--分頁,顯示第幾頁信息納毀
@Keyword AS varchar(100),--搜索,關鍵字
@Type AS integer--類李茄伏型)
AS
BEGIN
BEGIN TRAN
DECLARE @SQLStr AS varchar(4000)
DECLARE @strTemp AS varchar(300)
SET @strTemp=''
IF (@Keyword !='' )
BEGIN
SET @strTemp = @strTemp + ' AND (欄位1 LIKE ''%' + @KeyWord + '%'' )'
END
IF(@Type!=99)
BEGIN
SET @strTemp = @strTemp + ' AND (Type = '+ cast(@Type AS varchar) +')'
END
SET @SQLStr='SELECT TOP '+cast(@PageSize AS varchar)+'

欄位1,
欄位2,
欄位3,
...,
RecTotal=(SELECT count(Adminid) FROM Admin WHERE (Status>0)'+@strTemp +')--一共有多少條記錄哪攜
FROM Admin WITH (NOLOCK)
WHERE '+@strTemp +' AND id NOT IN (SELECT TOP '+cast(@PageSize*(@PageNum) AS varchar)+' id FROM 表 WHERE (Status>0) '+@strTemp +' ORDER BY id)
ORDER BY id'

EXEC(@SQLStr)
IF (@@error!=0)
BEGIN
RAISERROR 20000 ' '
ROLLBACK TRAN
RETURN (1)
END
COMMIT TRAN
END

⑺ 求解分析下面的存儲過程!as 後面一般是select 語句,他寫的是create語句。這符合規定嗎

從目前來看,
猜測是定義了一盯如個臨時表凱大啟,
用完就刪除,這是被允許的,
雖然你這寫的看起來效率不高...

就是說先定義一個臨時的表,然後把查仿攜詢到的值先插入到表中,這樣做的好處是把原本復雜的語句分解到相對簡單的程度.
缺點就是多了一個建表,插入,查詢,刪除的步驟,費時費力

⑻ sql存儲過程中select語句被截斷

可能是超出其長度了,將declare@GB_jinFiv2varchar(8000)啟基改為納旁粗declare@GB_jinFiv2varchar(max)試洞鎮試看

⑼ 存儲過程中執行create table as select from提示表或視圖不存在

你是意思是UP_DXPT_BB_ZWSR 執行報表則和或者視圖不存在 ?

那你先敗旁確認下
select
t.sort_line as VCHID,
t.sort_line as BILLIDS,
t.set_year as set_year,
t.cre_money as CRE_MONEY
from syzw.voucher_detail_budget t where t.as_code like "4%"
and t.set_year=2014
and substr(latest_op_date,1,10) >=to_char((sysdate -interval ''7'' day),''yyyy-mm-dd''察盯橡)
執行有沒有問題

熱點內容
流控腳本破解 發布:2025-02-07 08:39:09 瀏覽:413
什麼是資源為什麼要研究資源配置 發布:2025-02-07 08:25:19 瀏覽:87
釣魚網站源碼製作 發布:2025-02-07 08:23:54 瀏覽:139
mac運行fl需要什麼配置 發布:2025-02-07 08:15:45 瀏覽:573
安卓怎麼做都比不了蘋果 發布:2025-02-07 08:12:47 瀏覽:238
怎麼給物理機配置ip地址 發布:2025-02-07 08:01:37 瀏覽:139
三國志13未加密 發布:2025-02-07 07:54:37 瀏覽:926
馬斯克中國訪問 發布:2025-02-07 07:54:29 瀏覽:102
資料庫有表 發布:2025-02-07 07:50:49 瀏覽:29
基於nginx搭建圖片伺服器原理 發布:2025-02-07 07:44:18 瀏覽:449