当前位置:首页 » 存储配置 » 存储过程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 11:23:50 浏览:878
linux安全运维 发布:2025-02-07 11:14:19 浏览:735
阿里云集群服务器 发布:2025-02-07 11:12:38 浏览:451
如何选择家庭最佳配置 发布:2025-02-07 11:06:50 浏览:87
javatomcat服务器搭建服务器 发布:2025-02-07 10:55:22 浏览:622
vcenter存储器集群 发布:2025-02-07 10:54:31 浏览:583
咖啡的脚本 发布:2025-02-07 10:46:18 浏览:521
nsftp速度 发布:2025-02-07 10:30:58 浏览:431
存储过程ifor 发布:2025-02-07 10:25:28 浏览:434
命令行执行oracle脚本文件命令行 发布:2025-02-07 10:14:49 浏览:97