存储过程中的动态查询语句 [问题点数:100分,结帖人cooling]

Bbs1
本版专家分:20
结帖率 99.55%
Bbs1
本版专家分:20
Bbs14
本版专家分:885012
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
状元 2005年 总版技术专家分年内排行榜第一
2004年 总版技术专家分年内排行榜第一
Blank
进士 2006年 总版技术专家分年内排行榜第六
2003年 总版技术专家分年内排行榜第八
Blank
金牌 2005年6月 总版技术专家分月排行榜第一
2005年5月 总版技术专家分月排行榜第一
2005年4月 总版技术专家分月排行榜第一
2005年3月 总版技术专家分月排行榜第一
2005年2月 总版技术专家分月排行榜第一
2005年1月 总版技术专家分月排行榜第一
2004年12月 总版技术专家分月排行榜第一
2004年11月 总版技术专家分月排行榜第一
2004年10月 总版技术专家分月排行榜第一
2004年9月 总版技术专家分月排行榜第一
2004年8月 总版技术专家分月排行榜第一
2004年7月 总版技术专家分月排行榜第一
2004年6月 总版技术专家分月排行榜第一
2004年5月 总版技术专家分月排行榜第一
2004年4月 总版技术专家分月排行榜第一
2004年3月 总版技术专家分月排行榜第一
2004年1月 总版技术专家分月排行榜第一
2003年12月 总版技术专家分月排行榜第一
Bbs14
本版专家分:885012
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
状元 2005年 总版技术专家分年内排行榜第一
2004年 总版技术专家分年内排行榜第一
Blank
进士 2006年 总版技术专家分年内排行榜第六
2003年 总版技术专家分年内排行榜第八
Blank
金牌 2005年6月 总版技术专家分月排行榜第一
2005年5月 总版技术专家分月排行榜第一
2005年4月 总版技术专家分月排行榜第一
2005年3月 总版技术专家分月排行榜第一
2005年2月 总版技术专家分月排行榜第一
2005年1月 总版技术专家分月排行榜第一
2004年12月 总版技术专家分月排行榜第一
2004年11月 总版技术专家分月排行榜第一
2004年10月 总版技术专家分月排行榜第一
2004年9月 总版技术专家分月排行榜第一
2004年8月 总版技术专家分月排行榜第一
2004年7月 总版技术专家分月排行榜第一
2004年6月 总版技术专家分月排行榜第一
2004年5月 总版技术专家分月排行榜第一
2004年4月 总版技术专家分月排行榜第一
2004年3月 总版技术专家分月排行榜第一
2004年1月 总版技术专家分月排行榜第一
2003年12月 总版技术专家分月排行榜第一
Bbs14
本版专家分:885012
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
状元 2005年 总版技术专家分年内排行榜第一
2004年 总版技术专家分年内排行榜第一
Blank
进士 2006年 总版技术专家分年内排行榜第六
2003年 总版技术专家分年内排行榜第八
Blank
金牌 2005年6月 总版技术专家分月排行榜第一
2005年5月 总版技术专家分月排行榜第一
2005年4月 总版技术专家分月排行榜第一
2005年3月 总版技术专家分月排行榜第一
2005年2月 总版技术专家分月排行榜第一
2005年1月 总版技术专家分月排行榜第一
2004年12月 总版技术专家分月排行榜第一
2004年11月 总版技术专家分月排行榜第一
2004年10月 总版技术专家分月排行榜第一
2004年9月 总版技术专家分月排行榜第一
2004年8月 总版技术专家分月排行榜第一
2004年7月 总版技术专家分月排行榜第一
2004年6月 总版技术专家分月排行榜第一
2004年5月 总版技术专家分月排行榜第一
2004年4月 总版技术专家分月排行榜第一
2004年3月 总版技术专家分月排行榜第一
2004年1月 总版技术专家分月排行榜第一
2003年12月 总版技术专家分月排行榜第一
Bbs8
本版专家分:30425
Blank
黄花 2004年6月 其他数据库开发大版内专家分月排行榜第二
2004年3月 其他数据库开发大版内专家分月排行榜第二
2004年6月 MS-SQL Server大版内专家分月排行榜第二
Bbs14
本版专家分:885012
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
状元 2005年 总版技术专家分年内排行榜第一
2004年 总版技术专家分年内排行榜第一
Blank
进士 2006年 总版技术专家分年内排行榜第六
2003年 总版技术专家分年内排行榜第八
Blank
金牌 2005年6月 总版技术专家分月排行榜第一
2005年5月 总版技术专家分月排行榜第一
2005年4月 总版技术专家分月排行榜第一
2005年3月 总版技术专家分月排行榜第一
2005年2月 总版技术专家分月排行榜第一
2005年1月 总版技术专家分月排行榜第一
2004年12月 总版技术专家分月排行榜第一
2004年11月 总版技术专家分月排行榜第一
2004年10月 总版技术专家分月排行榜第一
2004年9月 总版技术专家分月排行榜第一
2004年8月 总版技术专家分月排行榜第一
2004年7月 总版技术专家分月排行榜第一
2004年6月 总版技术专家分月排行榜第一
2004年5月 总版技术专家分月排行榜第一
2004年4月 总版技术专家分月排行榜第一
2004年3月 总版技术专家分月排行榜第一
2004年1月 总版技术专家分月排行榜第一
2003年12月 总版技术专家分月排行榜第一
存储过程中的查询语句怎么写
--向临时表中写入数据rn insert into #t rn select fjid,fjjgid,fjname,fjpyjm,fjqd,fcbj,fxsj from dbo.[sl_fjb] rnwhere fjzt=@fjzt and fjjgid=@fjjgid and (fjname like '%'+@fjname+'%' or fjpyjm like '%'+@fjpyjm+'%' or fjqd like '%'+@fjqd+'%')rn order by fjnamernrn这个<em>语句</em>有没有什么错误啊? 我查不到对应的记录阿?
存储过程查询语句,变量问题
开始学习<em>存储</em><em>过程</em>,<em>查询</em><em>语句</em><em>中的</em>变量问题rn[code=SQL]create procedure CheckUserId12rn (@TextBox1Text varchar)rnasrnselect * from visitor where userid=@TextBox1TextrnGOrnrnrnexecute CheckUserId12 asd[/code]rnrnrnrn表是这样的rnuerid uername passworldrnrnasd asd asdrn但是<em>查询</em>不到
PL/SQL 存储过程动态查询语句问题? 在线、马上给分!!
我要产生<em>动态</em><em>语句</em>返回某个表的记录数量,为什么下面<em>语句</em>有错:rniCnt NUMBER;rn...rnd_sql := 'select count(*) into iCnt from t1 where ...';rnEXECUTE IMMEDIATE d_sql;rnrnrn运行时发生错误:ORA-00905: 缺少关键字rnrn请问解决办法????急
存储过程中的动态update语句
调用下面这段<em>存储</em><em>过程</em>时,里面的update没有执行。是不是update<em>语句</em>出错了?rnrndeclare declare @SQLStr nvarchar(2000)rnBEGINrn SET @SQLStr2='UPDATE ['+@TableName+'] SET CHECKSTATETIMES=CONVERT(varchar(50), GETDATE(), 20),CHECKUSERID='+@CHECKUSERID+',CHECKUSERNAME=' +@CHECKUSERNAME+',APPROVALRESULT='+@ApprovalResultFieldVal+',APPROVALREASON='+@APPROVALREASON+',STAMPTIME='+@CHECKSTATETIMES+',STAMPRENID='rn +@CHECKUSERID+',STAMPREN='+@CHECKUSERNAME+' where SYSID='''+@keyval+''''rn Exec sp_executesql @SQLStr2rn set @intError_S1 = @@ERRORrn END
动态存储过程中like语句
if exists(select * from sysobjects where name='GetNewsCount' and type='p')rndrop proc GetNewsCountrngornCREATE PROCEDURE GetNewsCountrn @table varchar(60)rn @title varchar(200)rn asrndeclare @sql varchar(60)rnset @sql=' select count(*) from '+rtrim(@table)+' where title like '+'%'+@title+'%'rnexec (@sql)rn GOrn就是想把表名弄成<em>动态</em>的 但是后面的like<em>语句</em>要出问题rn例如 select count(*) from tablename where title like 'content' 就是说 tablename 和title是<em>动态</em>的 rn该这么些啊 指点下
存储过程中使用动态视图
[code=SQL]rn select sql_text ,rn buffer_gets , rn disk_reads ,rn executions ,rn optimizer_mode ,rn buffer_gets/executions gets_exec,rn disk_reads/executions disk_reads_exec,rn hash_value,rn address, rn d.usernamern from v$sqlarea t,dba_users drnrn where (buffer_gets > 10000 or disk_reads > 10)rn and d.user_id=t.parsing_user_idrn order by buffer_gets desc[/code]rn上面代码单独用的时候可以,但是放到<em>存储</em><em>过程</em>就报 000942的错误,说表或视图不存在!我的用户具有DBA权限,rn进行grant select on sys.v_$sqlarea to username时报权限不足的错误,这是怎么回事
存储过程中的动态表名问题
<em>存储</em><em>过程</em>中如何才能使用变量作为表名进行操作,如下:rnCREATE PROCEDURE saveOldEbomEditationrn @tablename varchar(64) rnASrn declare @editNo varchar(32)rn declare @newtablename varchar(64)rnbegin transactionrn select @editNo=EBOM_Ver from EBOM_INFO where EBOM_DBTName=@tablenamernrn select @newtablename=@tablename+@editNornrn select * into @newtablename from @tablename ?????!!!!rnif(@@error=0)rnrn commit transactionrnelsern rollback transactionrnrn问题出在打标记的一行。请问各位,可有办法使用变量作为表名,以实现多<em>动态</em>表的操作?多谢!!!
存储过程动态创建表格的问题
我在SQL Server数据库中创建一个<em>存储</em><em>过程</em>,想利用它创建表格,由于表格名是实现不知道的,因此我需要<em>动态</em>选择表格名,代码如下:rnCREATE TABLE @UserNamern(rn LogTime datetime,rn LogContent ntextrn)rn显然以上代码是行不通的rn请问高手如何解决这个问题rn我知道有一种方案,即在业务层写SQL<em>语句</em>,比如用ADO.NET,但是这种方案我觉得不是首选,请问更好的解决方案
存储过程中的查询语句可否是字符串?
我想根据用户的输入<em>动态</em>生成返回的select<em>语句</em>,如@s_scope=‘aa#ss#’rn生成的是select * from aa where code='aa' or code='ss'rn我的select<em>语句</em>可否先是一个字符串形式,因为我要依据@s_scope的内容<em>动态</em>来写select<em>语句</em>,高手帮帮忙!!!rnCREATE PROCEDURE sp_aarn @s_scope varchar(1000)rnASrnselect * from aa where rnGOrnrn谢谢!!!
求救:Oracle数据库的存储过程中的查询语句怎么写?
就是写这个<em>语句</em>的<em>存储</em><em>过程</em>:rn select fybm from zf_fy where zf_fy.nodeid=?rnrn其中fybm 是主键 ZF_FY是表名, nodeid 是外键,怎么写这个sql<em>查询</em>的<em>存储</em><em>过程</em>啊???
日期在存储过程中合成查询语句的问题
请问@BDate与@EDate传入后在Set<em>语句</em>中应该如何写才能不出错rnrnALTER proc Get_adjscxrn(rn @bt varchar(4),rn @ddid varchar(30),rn @zdid varchar(30),rn @Bdate varchar(10),rn @Edate varchar(10)rn)rnasrn DECLARE @SqlStr varchar(200)rn Set @SqlStr='select * from bl_idx where BDate>='+@BDate+' and Bdatern exec(@SqlStr)rngornrn
存储过程中,在查询语句中添加变量的问题
又遇到新问题了rncompany表中有字段company_name,company_idrn本来的<em>查询</em>是这样的rnDECLARE @company_name varchar(100),@company_id intrnrnSELECT @company_id = 12rnrnSELECT @company_name = company_name FROM company WHERE company_id = @company_idrnrn现在我需要对表名<em>动态</em>取值,一位朋友告诉我用exec,但一些细节还是不清楚,再次提问rnrn我定义了表名变量rnDECLARE @tn varchar(100)rnSELECT @tn = 'company'rnrnEXEC('SELECT @company_name = company_name FROM ' + @tn + 'WHERE company_id = @company_id')rn这一句因为有@company_name和后面的@company_id存在,我就不知道怎么写了,rn请高手指点。
存储过程中获取非查询语句影响的行数
[code=SQL]rndeclare @Rows intrnset @Rows=(update TableName set Column=1)rn[/code]rnrn以上是伪代码,在SQL Server里提示出错。rnrn正确的方法是什么?求教!
如何在存储过程中使用查询语句的结果
如标题。rn譬如rnbook表有id ,name ,pricerncreate proc_arnselect * from book where id=**rn在上面的<em>查询</em>后如何使用已得到的结果(id ,name ,price),rnrnrn
存储过程中的参数怎么写不同的查询语句?
以下是本人乱写的,大概想要实现的意思是传来三个参数据,如果其中一个参数为空时,就执行另一个<em>查询</em><em>语句</em>,我是照我的想法乱写了下面,可是不行.我也不知应该怎么写?请高手帮帮.谢谢!!rnCREATE PROCEDURE dbo.Usrn@user_id nvarchar (50),rn@user_sex nvarchar (50),rn@user_email nvarchar (50)rnASrnSELECT * from User_ta wherernif(@user_id is not null)rnbeginrnuser_id=@user_idrnendrnrnif(@user_sex is not null)rnbeginrnif(@user_id is not null)rnbeginrnand user_sex=@user_sexrnendrnelsernbeginrnuser_sex=@user_sexrnend rnend rnrnif(@user_email is not null)rnbeginrnif((@user_id is not null) or (@user_sex is not null))rnbeginrnand user_email=@user_emailrnendrnelsernbeginrnuser_email=@user_emailrnend rnendrnorder by ID descrnrnGO
如果在存储过程中加上查询语句。 如下
CREATE PROCEDURE [dbo].[get库存]rn(@sqlyg varchar(300))rn ASrnselect * from 表名 WHERE +@SQLYG rn@SQLYG 是一个<em>查询</em>条件变量,如可能是 AA=1 rn意思就相当于 如下 SELECT * FROM 表名 WHERE AA=1rn可好象如上<em>语句</em>不成立.该如何解决
如何在存储过程动态加入索引
这是一个分页<em>存储</em><em>过程</em>,该如何给where条件<em>动态</em>创建索引?rn[code=sql]rnALTER procedure [dbo].[usp_fPage]rn( rn@tblName nvarchar(4000), ----要显示的表或多个表的连接rn@fldName nvarchar(4000) = '*', ----要显示的字段列表rn@pageSize int = 10, ----每页显示的记录个数rn@page int = 1, ----当前页码rn@pageCount int = 1 output, ----<em>查询</em>结果分页后的总页数rn@Counts int = 1 output, ----<em>查询</em>到的记录数rn@fldSort nvarchar(4000), ----排序字段列表或条件rn@Sort bit = 0, ----排序方法,0为升序,1为降序(如果是多字段排列Sort指代最后一个排序字段的排列顺序(最后一个排序字段不加排序标记)--程序传参如:' SortA Asc,SortB Desc,SortC ')rn@strCondition nvarchar(4000) , ----<em>查询</em>条件,不需wherern@ID nvarchar(4000), ----主表的主键rn@Dist bit = 0 ----是否添加<em>查询</em>字段的 DISTINCT 默认0不添加/1添加rn)rn rnASrn rnSET NOCOUNT ON --设置不返回计数rnrnDeclare @sqlTmp nvarchar(1000) ----存放<em>动态</em>生成的SQL<em>语句</em>rnDeclare @strTmp nvarchar(1000) ----存放取得<em>查询</em>结果总数的<em>查询</em><em>语句</em>rnDeclare @strID nvarchar(1000) ----存放取得<em>查询</em>开头或结尾ID的<em>查询</em><em>语句</em>rn rnDeclare @strSortType nvarchar(10) ----数据排序规则ArnDeclare @strFSortType nvarchar(10) ----数据排序规则Brn rnDeclare @SqlSelect nvarchar(50) ----对含有DISTINCT的<em>查询</em>进行SQL构造rnDeclare @SqlCounts nvarchar(50) ----对含有DISTINCT的总数<em>查询</em>进行SQL构造rnrndeclare @timediff datetime --耗时测试时间差 rnselect @timediff=getdate() rnrnrnif @Dist = 0rnbeginrn set @SqlSelect = 'Select 'rn set @SqlCounts = 'Count(*)'rnendrnelsernbeginrn set @SqlSelect = 'Select Distinct 'rn set @SqlCounts = 'Count(DISTINCT '+@ID+')'rnendrnrn--排序方式rnif @Sort=0rnbeginrn set @strFSortType=' ASC 'rn set @strSortType=' DESC 'rnendrnelsernbeginrn set @strFSortType=' DESC 'rn set @strSortType=' ASC 'rnendrnrn--------生成<em>查询</em><em>语句</em>--------rn--此处@strTmp为取得<em>查询</em>结果数量的<em>语句</em>rnif @strCondition is null or @strCondition='' --没有设置显示条件rnbeginrn set @sqlTmp = @SqlSelect+ @fldName + ' FROM ' + @tblNamern set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblNamern set @strID = ' FROM ' + @tblNamernendrnelsernbeginrn set @sqlTmp = @SqlSelect+ @fldName + ' FROM ' + @tblName + ' where 1=1 ' + @strConditionrn set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName + ' where 1=1 ' + @strConditionrn set @strID = ' FROM ' + @tblName + ' where 1=1 ' + @strConditionrnendrn----取得<em>查询</em>结果总数量-----rnexec sp_executesql @strTmp,N'@Counts int out ',@Counts outrndeclare @tmpCounts intrnif @Counts = 0rn set @tmpCounts = 1rnelsern set @tmpCounts = @Countsrn--取得分页总数rnset @pageCount=(@tmpCounts+@pageSize-1)/@pageSizern/**//**当前页大于总页数 取最后一页**/rn if @page>@pageCountrn set @page=@pageCountrn--/*-----数据分页2分处理-------*/rn declare @pageIndex int --总数/页大小rn declare @lastcount int --总数%页大小 rnrn set @pageIndex = @tmpCounts/@pageSizern set @lastcount = @tmpCounts%@pageSizernrn if @lastcount > 0rn set @pageIndex = @pageIndex + 1rn elsern set @lastcount = @pagesizern --//***显示分页rn if @strCondition is null or @strCondition='' --没有设置显示条件rn beginrn if @pageIndex+ @strFSortType rn end rn endrn------返回<em>查询</em>结果-----rnrnexec sp_executesql @strTmprnselect datediff(ms,@timediff,getdate()) as 耗时 rnSET NOCOUNT OFF --设置返回计数rn[/code]
怎么在存储过程中创建动态的表
ALTER PROCEDURE [insert_peccancy_1]rn (@SerialNum_1 [nvarchar](20))rnrnAS rnDeclare @TableName nvarchar(20)rnrnSet @TableName='peccancy'+SUBSTRING(@SerialNum_1,1,8);rnrnCREATE TABLE @TableName(rn [SerialNum] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,rn [CrossingSn] [int] NULL ,rn [CarBoard] [char] (15) COLLATE Chinese_PRC_CI_AS NULL ,rn [BoardColorSn] [int] NULL ,rn [CarStyleSn] [int] NULL ,rn [ChargeStyleSn] [int] NULL ,rn [ChargeTypeSn] [int] NULL ,rn [CarColorSn] [int] NULL ,rn [PassTime] [datetime] NULL ,rn [ViolationSn] [int] NULL ,rn [AlarmStyleSn] [int] NULL ,rn [InputState] [tinyint] NULL ,rn [DataState] [int] NULL ,rn [TimeSinceRed] [int] NULL ,rn [FileName] [char] (100) COLLATE Chinese_PRC_CI_AS NULL ,rn [Offset] [bigint] NULL ,rn [NearFileLen] [bigint] NULL ,rn [FarOneFileLen] [bigint] NULL ,rn [FarTwoFileLen] [bigint] NULL ,rn [FarThreeFileLen] [bigint] NULL ,rn [RunDirection] [int] NULL ,rn [CarSpeed] [float] NULL ,rn [CarLength] [int] NULL ,rn [FirstPosition] [int] NULL ,rn [SecondPosition] [int] NULL ,rn [PassUseTime] [int] NULL ,rn [OperatorSn] [int] NULL ,rn [AmendTime] [datetime] NULL ,rn [SendTime] [datetime] NULL ,rn [Reserve] [char] (50) COLLATE Chinese_PRC_CI_AS NULL ,rn [Remark] [char] (32) COLLATE Chinese_PRC_CI_AS NULL rn) ON [PRIMARY]rnGOrnSET QUOTED_IDENTIFIER OFF rnGOrnSET ANSI_NULLS ON rnGOrnrn在CREATE TABLE @TableName中出错,请问怎么修改可以让我<em>动态</em>的生成。rn
动态存储过程中怎么用top
我写了这样的一个<em>动态</em><em>语句</em>:rnset @pan='select @pguid=top 1 parentGuid from '+@tablename+' where parentGuid='''+ltrim(@parentGuid3)+''''rn exec sp_executesql @pan,N'@pguid nvarhcar(128) output'@pguid outputrn在执行的时候提示 关键字 'top' 附近有语法错误。rnrn静太的 set @pguid=(select top 1 parentGuid from table where parentGuid=@parentGuid3) 这样是对的啊rnrnrn请问各位 <em>动态</em>中top怎么用? 在表中parentGuid 有两条数据 我只选其<em>中的</em>一条 除了top 还有别的什么<em>语句</em>能用吗?
关于存储过程动态查询的权限问题
在<em>存储</em><em>过程</em>执行<em>动态</em><em>查询</em>的时候,rn比如rncreate procedure up_testrn asrn .....rn set @where=' where age=18'rn set @sql='select * from table1 ' +@where rn exec(@sql)rn gornrn要求执行<em>存储</em><em>过程</em>的用户,必须对表table1有select权限,rn有没有什么好的解决办法?rn(我尝试用app role,但是app role不能主动断开)rn
+++++++++++存储过程中怎么实现动态表明++++++++++++++++
sql = "select * from" + table_name+ "where OBID='"+obid+"'" ; rn上面的表面是<em>动态</em>的,请问在<em>存储</em><em>过程</em>中如何实现这样的功能?rn
想知道在存储过程中如何使用动态表达式.
比如,有个表达式:rnif 工种 = '电工' then 工资 = 1000rnif 工种 = '机修工' then 工资 = 1500rnrn想用在<em>存储</em><em>过程</em>中,不知道如何设置.
存储过程中能否执行一个动态语句
比如有<em>过程</em>如下:rnprocedure test(aa varchar2)rnisrn v_sql varchar2(200);rnbeginrn v_sql:='delete from '||aa;rnrn 这里我想执行v_sql<em>语句</em>,怎么处理呢??rn ..........rnrnendrn
db2 关于存储过程动态修改数据
新手 rn for t1 as select id,bmfw from A where id not in(select p_id from A) and sort=''||v_get||'' and id=8 dorn begin rn set v_value1=t1.bmfw;rn set v_id=t1.id;rn rn if posstr(v_value1,',')=0 and posstr(v_value1,'-')>0 thenrn set v_str1=posstr(v_value1,'-');rn set v_value3=substr(v_value1,v_str1+1);rn set v_value2=substr(v_value1,1,v_str1-1);rn set sql0='update BASE_DISEASE set classid='||v_id||' where sort='''||v_get||''' and CODING>='''||v_value2||''' and CODING ='''||v_value2||''' and CODING ;rn execute immediate sql0;rn end if;rn set v_value1=substr(v_value1,v_str+1);rn end while; rnrnrnrnrnrn求大神看看代码逻辑有没有问题 因为怕卡死 所以设置了一个id=8 试试
关于存储过程中表名的问题(动态存储过程)
请大家帮我把下面的<em>存储</em><em>过程</em>改成如何同表名是<em>动态</em>的形成,还有@pcsl如何累加rnrn[code=SQL]CREATE PROCEDURE SBDHSCJH1 (@jz nvarchar(10),@zhy nvarchar(50),@danwei nvarchar(20), @xmmc nvarchar(50),@time1 nvarchar(200),rn@pcsl int output )rnASrn declare @ht_key nvarchar(100), @jzh nvarchar(10), @zhuany nvarchar(50),@dw nvarchar(10) rn declare cur cursor local for select ht_key from Eq_htinfo where ht_jzh=@jz and ht_zhuanye=@zhy and ht_jldw=@danwei and ht_pnum=@xmmc rn open currn fetch next from cur into @ht_keyrn while @@fetch_status=0 rn begin rn ------------------------计算已排产数量--------------------------------- rn set @pcsl =@pcsl+isnull( (select ht_sl from Eq_htinfo where ht_pnum=@xmmc and ht_jzh=@jz and ht_key=@ht_key and ht_key in rn (select ht_key from Eq_prodplan where pdp_pnum=@xmmc+ @time1)) ,0) rn fetch next from cur into @ht_keyrn endrn close currn deallocate cur rn return rnGO[/code]
存储过程中如何动态的删除表数据
写一个<em>存储</em><em>过程</em>,传入参数@tablename:表名rn然后删除表@tablename<em>中的</em>数据,sql server和oracle中分别rn如何实现。谢谢 rn
**__ 如何构造存储过程中的动态查询串? ___**
如何构造<em>存储</em><em>过程</em><em>中的</em><em>动态</em><em>查询</em>串?rn...rnSET @sql =' SELECT * FROM AlarmHistoryrn WHERE AlarmTime BETWEEN ''' + @starttime + 'AND' + @stoptime + rn ' AND AlarmType = '" + @alarmtype + "" rnEXECUTE(@sql) rn...rn多谢!!!
存储过程动态创建表遇到的问题
基本<em>过程</em>如下:要求是不能改变临时表#TmpTab的名称,实现如下<em>语句</em>的功能,当然现在可以编译通过,但执行时会报错"对象名 '#TmpTab' 无效"rn以及"无法 除去 表 '#TmpTab',因为它在系统目录中不存在。"rnCREATE PROCEDURE AAA @iYear Smallint AsrnrnIf @iYear)rnGO
存储过程中对动态表操作
传入表名,(TBNAME VARCHAR2)型,rninsert into TBNAME values(....怎么不行???该如何做
存储过程中如何使用动态数据库名?
我要进行的是跨数据库操作rnA是基础数据库,<em>存储</em>用户等基本资料rnB是用来存放其他数据的,而且根据数据的膨胀会经常换,比如上次数据库名是B20070101,下次数据库名就成了B20070301rn现在我的<em>存储</em><em>过程</em>写在A中,要对B进行操作,请问怎样才能实现?
如何在存储过程动态的建VIEW
我想在<em>存储</em><em>过程</em>中,传人一个参数,比如Id,然后<em>动态</em>的建View:create view view_name from table_name where id
在SQLServer的存储过程中如何做简单的动态查询
请各位大老举个例子
存储过程中如何执行动态字符串?
<em>存储</em><em>过程</em>中如何执行<em>动态</em>字符串?rn比如有一表Student[name,sex,address,tel]rn我想写一<em>存储</em><em>过程</em><em>查询</em>该表,若传递(null,"m",null,null)则执行"select * from student where sex ='m'"若传递("xxx",null,null,1234567)则执行"select * from student where name='xxx' and tel=1234567"rn==============rn该<em>存储</em><em>过程</em>如何写?/谢谢!
存储过程中的动态参数应该如何实现?
[code=SQL]rnrnCREATE PROCEDURE SHE_Colorodrrn@dxcode varchar(1000)rn ASrnbeginrnrn Select a.Cdxcodeguid,rn Color =rn Substring(a.Color,rn b.Number,rn Charindex('/', a.Color + '/', b.Number) - b.Number),rn a.Ordersqty,rn a.Prname1,rn a.Prname2,rn a.Prname3,rn a.Prname4,rn a.Prname5,rn a.Prname6,rn a.Prname7,rn a.Prname8,rn a.Prname9,rn a.Prname10rn into #temrn From (rn rn Select a.Cdxcodeguid, b.*rn From (Select Guid, Color,Prname1,rn Prname2,rn Prname3,rn Prname4,rn Prname5,rn Prname6,rn Prname7,rn Prname8,rn Prname9, Prname10,Sum(Ordersqty) As Ordersqtyrn From Om_Modetailsrn Group By Guid,rn Color,rn Prname1,rn Prname2,rn Prname3,rn Prname4,rn Prname5,rn Prname6,rn Prname7,rn Prname8,rn Prname9,rn Prname10) b,rn Om_Momain arn Where a.Guid = b.Guid and a.cdxcode in(@dxcode)-------------------这个无效rn ) arn Join Master .. Spt_Values b On b.Type = 'p'rn And b.Number Between 1 And Len(a.Color)rn Where Substring('/' + a.Color, b.Number, 1) = '/'rnrnendrnrnrnrnrn[/code]
存储过程动态定义变量(可否?)
如题:由于统计表<em>中的</em>字段是可变的,我在做统计时,需要<em>动态</em>创建统计数据表,我的想法(3种方法)是rn1、通过<em>查询</em>将所需要的数据(也就是将要增加到统计表<em>中的</em>字段)放入若干个变量中(不定数量的变量),在做数据处理rn2、通过<em>查询</em>将所需要的数据放入到一类似于数据集的变量中,然后一一取出再做处理也可以。(但不知道sqlserver中是否有该类型变量?)rn3、通过<em>查询</em>将所需要的数据放入到临时表中,但在做循环时取值,不知道sqlserver如何取?(是不是得用游标?)或者这样取,定位->下一条,直到该临时表结束标记结束取值,不知道sqlserver是否有此功能?rn以上三种方式,对我来说,游标是可以处理的,但我不想这样处理(因:道听途说了,游标处理会比较慢的)rn分不多了,还忘见量,较急,辛苦各位了
存储过程中怎么动态执行sql语句
<em>动态</em>的实现表名的<em>动态</em>的配置及<em>动态</em>的配置所对应的列名
存储过程动态累加的问题请教
现有一<em>存储</em><em>过程</em>如下:rnrnCREATE procedure sp_StockMonthReport @year char(4),@month char(2)rnAsrndeclare @sql varchar(8000),@day int,@dd int,@stock_amount intrnrn/*--得到要<em>查询</em>年月的天数rnselect @dd=day(dateadd(month,@month,dateadd(year,@year-1999,'1999-01-01'))-1)rn ,@day=1rn ,@sql='rnSELECT stock.tz_year, stock.tz_month, v_book.fashion_code, v_book.size_code, rn stock.qc_amount' */rn--declare @dd int,@sql varchar(10)rn--declare @n datetimern--select @n=Cast(@year+@month+'01' AS DateTime)rn--select @n=@year+'-'+@month+'-01'rn--SELECT @n='20030901'rn--select @dd = datediff(day,@n-day(@n)+1,dateadd(month,1,@n-day(@n)+1))rnrn--先取出期初数量rn--Select @Stock_amount=qc_amount from stock where tz_year=@year --andtz_month=@monthrn--rnSelect @day=1,@dd=31,@sql='SELECT stock.tz_year, stock.tz_month, v_book.fashion_code, v_book.size_code, stock.qc_amount' rnwhile @dayrnexec(@sql)rnGOrn需要在<em>存储</em><em>过程</em>中生成每日结存数据。如何实现?rn
存储过程动态增加字段的问题,请教一下!
decalare @para int rnset @para=1 rnwhile@para+@para是错的,请大家帮我一下
存储过程动态执行其他存储过程
我的需求是在<em>存储</em><em>过程</em>中,如何根据传入的条件,而执行不同的<em>存储</em><em>过程</em>rnrn类似于下面rnset @calledProduce=@produceName+parameterrnexec @calledProducernrn@produceName是作为参数传过来的的,而起参数是<em>动态</em>构造的,不同的<em>存储</em><em>过程</em>,可能个数不一样。rnrnrn我这需求能实现吗?
Oracle 存储过程动态创建目录directory
vc++中通过调用<em>存储</em><em>过程</em> 上传图片,已将通过<em>存储</em><em>过程</em>只能上传不大于32K文件解决了,现在问题是 只能上传指定路径的图片,现在想在<em>存储</em><em>过程</em>中 <em>动态</em>创建directory,然后能上传任意路径的图片到数据中指定数据类型为BLOB的字段中,<em>存储</em><em>过程</em>中<em>动态</em>创建directory成功,但是调试程序时,总是出错。rnrncreate or replace procedure AddPicture(StdentID in varchar2,blob,v_picname in varchar2,filename in varchar2) isrn f_lob BFILE; --文件类型 rn b_lob BLOB;rn --filename 图片名称rn --v_picname 创建directory的路径rn beginrn INSERT INTO stpic(stid,studpic,stpicname) VALUES (StdentID,EMPTY_BLOB(),filename) RETURN studpic INTO b_lob; rn rn v_sql := 'create or replace directory IMAGEANY as '''||v_picname||''''; rn execute immediate v_sql;rn rn --插入空的blob rn f_lob:=bfilename('IMAGEANY',filename); rn --获取指定目录下的文件 rn dbms_lob.fileopen(f_lob,dbms_lob.file_readonly); rn --以只读的方式打开文件 rn dbms_lob.loadfromfile(b_lob,f_lob,dbms_lob.getlength(f_lob)); rn --传递对象 rn dbms_lob.fileclose(f_lob); rn --关闭原始文件 rn COMMIT; rnend AddPicture;
请教有关存储过程动态建视图
我在sql2000新建<em>存储</em><em>过程</em>的文本框中写入如下代码来<em>动态</em>建视图rnCREATE PROCEDURE createview2 ASrnIF EXISTS (SELECT * FROM sysobjects WHERE xtype='V' and NAME='viewProductPro2')rn DROP VIEW viewProductPro2rnGOrncreate view viewProductPro2rnasrnselect productID,rna=sum(case propertyName when '地板厚度'then detailID else 0 end),rnb=sum(case propertyName when '面层分类'then detailID else 0 end),rnc=sum(case propertyName when '作用范围'then detailID else 0 end),rn--d=sum(case propertyName when '产品特性'then detailID else 0 end),rnd=sum(case propertyName when '产品特性'then 0 else 0 end),rne=sum(case propertyName when '地板槽口'then detailID else 0 end),rnf=sum(case propertyName when '地板企口'then detailID else 0 end)rnfrom viewProductProrngroup by productIDrngorn没有语法错误提示rn第一次能成功创建视图viewProductPro2,等我前台(asp)这样调用exec(createview2)时,程序提示视图viewProductPro2不存在,我到sql2000新建的createview2<em>存储</em><em>过程</em>的文本框查看,只有如下代码,还有创建视图viewProductPro2,一些代码不见了?rnCREATE PROCEDURE createview2 ASrnrnIF EXISTS (SELECT * FROM sysobjects WHERE xtype='V' and NAME='viewProductPro2')rn DROP VIEW viewProductPro2rnGOrn我想这正是那创建视图的代码不在,所以程序提示视图viewProductPro2不存在,那怎样做能创建视图viewProductPro2,rn我在<em>查询</em>分析器里能正确成功,是不是书写<em>存储</em><em>过程</em>不符合语法,?rn请高手指教:rn
存储过程中怎么使用动态查询条件?
比如表rntGoodsrnrnrnkeyid code name pricern1 1.1.001 苹果 3rn2 1.1.002 香蕉 2rn3 1.2.001 橘子 4rn4 2.1.001 葡萄 8rn5 2.1.002 桃子 2rnrnrn想写一个储存<em>过程</em>(只通过code和name<em>查询</em>记录):rnsp_chaxun '','苹果' --<em>查询</em>name为苹果的记录rnsp_chaxun '2.1.001','' --<em>查询</em>code为2.1.001的记录rnsp_chaxun '2.1.001','葡萄' --<em>查询</em>code为2.1.001并且name为香蕉的记录rn我想这样写rncreate procedure sp_chaxunrn@code varchar(20),rn@name varchar(20)rnAsrnselect * from tGoodsrnwhere code = @code And name = @namernrn可是这样必须提供两个参数。rn请问应该怎么写才对,谢谢大家!
存储过程动态传SQL语句出错
rnrn<em>存储</em><em>过程</em>:rnrn[code=SQL]ALTER PROCEDURE [dbo].[s_sp_Getprovince]rnrn@provincesql nvarchar(50)rnASrnBEGINrnrn select distinct * from tblProvince where 1=1 + @provincesqlrnrnENDrnrnrnexec s_sp_Getprovince 'and zid=bj'[/code]rnrnrnrn我在上面的<em>存储</em><em>过程</em>中<em>动态</em>的传入一条SQL<em>语句</em>时出错:rnrn在将 nvarchar 值 'and zid=bj' 转换成数据类型 int 时失败。rnrn
存储过程中如何动态执行多条 SQL?
我想传一个字符串:有多条SQL rn 如:str:='beginrn drop table Tbtempalarm1;rn drop table Tbtempalarm2; rn Create table Tbtempalarm1 as select * from tbAlarm;rn Create table Tbtempalarm2 as select * from tbFactory;rn end;'rnrn 能以 EXECUTE immediate str; 的形式执行吗?rn rn 有什么方法能实现吗?
如何在存储过程中使用动态表名?
我想做这样一个<em>存储</em><em>过程</em>,比如:rnCREATE PROCEDURE dbo.tranTable(@TName varchar(255)) rnASrn select * from @TName where flag<>'0'rn delete from @TName where flag='-1'rn update @TName set flag='0'rnGOrnrn我想把表名写成变量的形式,可是系统提示错误,说@TName必须先声明变量。我该如何来做?
如何在存储过程动态创建表?
我在<em>存储</em><em>过程</em>中根据表名来<em>动态</em>创建一新表时,提示“权限不足”。rn但我是在同一个用户中执行该<em>存储</em><em>过程</em>,应该不存在权限的问题。rn即便以系统管理员的身份执行该<em>过程</em>,也会提示同样的错误。
怎样在ORACLE9i 的存储过程中使用动态表名
怎样在ORACLE9i 的<em>存储</em><em>过程</em>中使用<em>动态</em>表名!rnrn我想在<em>存储</em>中使用<em>动态</em>表名,但试了很多次都没成。现请教各位大虾!rnrn如:select bh into vc_bh from vc_bm;rnvc_bh vc_bm分别是变量用来存,取出的编号和表的名字,但总说表不存在,现请教!
存储过程中如何动态形成SQL语句
在<em>存储</em><em>过程</em>中SQL<em>语句</em>中能不能实现如下情况?rn1:Select * From TableName 其中 TableName 为变量。rn2:Select * From OrderMrn Where 条件1,条件2 即条件是<em>动态</em>生成的。
存储过程中如何做简单的动态查询"的问题">"存储过程中如何做简单的动态查询"的问题
CREATE OR REPLACE procedure ZXM_SB_GZ_GETrn(p_table in varchar2,rn p_name in varchar2,rn p_value in varchar2,rn outpara out lntxdba.zxm_pag_cs_power.c_typern )rn asrn beginrn declarern wherevalue varchar2(200);rn beginrn wherevalue:='select * from '||p_table||' where '||p_name||'='||p_value;rn open outpara forrn wherevalue;rn end;rn end; rn代码是从csdn上找的,编译后又错误:rn号= 0 列号= 0 错误文本= PL/SQL: Compilation unit analysis terminatedrn行号= 1 列号= 96 错误文本= PLS-00201: 必须说明标识符 'LNTXDBA.ZXM_PAG_CS_POWER'rnrn高手指点指点吧,小弟正要学习<em>存储</em><em>过程</em>,苦于无资料,好不容易找个实例还不能运行~~ :(
存储过程中如何使用动态的游标
声明游标:declare blur_cur scroll cursor for select name from testtbl rnrn但因为我的SELECT<em>语句</em>是<em>动态</em>生成的,而这样定义:rndeclare @nvar_sql nvarchar(2000)rnset @nvar_sql='select name from testtbl' rndeclare blur_cur scroll cursor for exec sp_executesql @nvar_sqlrn语法不允许。rn当然,我可以写另外一个<em>存储</em><em>过程</em>用来返回游标,然后在此<em>存储</em><em>过程</em>中使用;但如果要在一个<em>存储</em><em>过程</em>里处理,有什么办法呢 rn
存储过程
SELECTrnCASE node_addr rnWHEN '68.38.9@10.68.101.9' then '1' rnwhen '3.38.61@10.107.203.61' then '3' rnwhen '3.38.102@10.107.203.102' then '4' rnelse '5' rnendrnfrom CSC_TRAFFIC_DAY_10_8_2004rnrn这个在<em>存储</em><em>过程</em>中怎么写呢?〉
存储过程中的IF
[code=SQL]rnALTER PROCEDURE [dbo].[test] rn@c_id int,rnASrnrnrnBEGINrn SELECT * FROM aaa WHERE bbb=222 and ccc=333 rnENDrnrn[/code]rnrn要求当@c_id=0时 SELECT 为SELECT * FROM aaa WHERE bbb=222 and ccc=333 ,当大于0时为 SELECT * FROM aaa WHERE bbb=222 and ddd=444 and fff=555;rnrn[color=#FF0000]要求用“DECLARE @cwhere varchar(250) ”变量来进行赋值[/color]
动态查询语句
报表格式如下rn输入是 开始月份(开始月份默认为1月),结束月份rnrn营业部名称 1月有效户数 …… X月有效户 合计rnrn合计rnrnPS:如果是输入1月和9月,则上面的统计就是1月到9月rn表tabaa字段如下为rnRQ 日期rnYYB 营业部rnLSH 流水号rnYWLB 业务类别rnrn当YWLB为190时,为本月的有效用户rnrn上面的<em>过程</em>怎么写呢?请高手赐教
存储过程中的存储对象持久性.
小弟有一个问题,希望大家能够帮解决一下。rn Java调用一个<em>过程</em>,如果调用该<em>过程</em>时出现exception,我将exception<em>存储</em>到一个索引table中,并返回给Java一个状态位-1,Java得到-1以后,再得到<em>存储</em>在索引table<em>中的</em>错误信息。我如何能够让Java得到索引table<em>中的</em>错误信息呢?或者如何能将索引table里的数据持久<em>存储</em>呢?rn
这个查询语句如何修改,才能在存储过程中使用
[img=https://img-bbs.csdn.net/upload/201409/15/1410781390_370083.jpg][/img]rn[img=https://img-bbs.csdn.net/upload/201409/15/1410781384_748024.jpg][/img]rnrn这个sql可以<em>查询</em>出来了,什么才能让它在<em>存储</em><em>过程</em>中使用呢,rn我把它放在<em>存储</em><em>过程</em>中使用出现“SELECT 语所中缺少into 子句”rn如何解决
查询语句形成的表给在存储过程中多次调用
怎么把一个通过<em>查询</em><em>语句</em>形成的表给在<em>存储</em><em>过程</em>中多次调用?
请问:在oracle的存储过程中,如果获得查询语句的列数和各个列名?
在oracle的<em>存储</em><em>过程</em>中,如果获得<em>查询</em><em>语句</em>的列数和各个列名?rn如果能获得列的类型,最好了。rnrn谢谢!!
存储过程查询语句select用like模糊查询检索不能记录
我的数据库有60万多条记录,为了优化<em>查询</em>速度,所以用<em>存储</em><em>过程</em>.rn用select<em>查询</em>的时候,where条件<em>语句</em>后面用"="能检索到记录,但换用"like"模糊<em>查询</em>的时候就不能检索到数据.rnrnSQL<em>中的</em><em>存储</em><em>过程</em>代码如下:rnCREATE PROCEDURE testProcedure @tempChar char(150)rnASrn select * from jobs where job_desc like '%@tempChar%'rnGOrnSET QUOTED_IDENTIFIER OFF rnGOrnSET ANSI_NULLS ON rnGOrnrnASP<em>中的</em>调用<em>语句</em>代码如下:rn tempChar="Ch"rn ss = "EXECUTE dbo.testProcedure "&tempChar&""rn Set rs = conn.Execute(ss) rnrn do while not rs.eof rn response.write rs(1)&" "rn if rs.eof then exit dorn rs.movenextrn if rs.eof then exit dorn loop
如何在存储过程中为一个变量通过查询语句获取值?
在<em>存储</em><em>过程</em>中定义一个变量通过<em>查询</em><em>语句</em>却无法赋值,该怎么解决呢?rnDECLARE @SchoolworkID INTrn SET @SchoolworkID = 0----可以获取值rn SELECT @SchoolworkID = (SELECT TOP 1 SchoolworkID FROM StudentSchoolwork WHERE(schoolworkPath = @schoolworkPath))------rnrn具体情况如下rnCREATE PROCEDURE spUploadSchoolworkrn @studentNO CHAR(6),rn @schoolworkType CHAR(1),rn @schoolworkPath VARCHAR(200),rn ---@teacherMarkedSign CHAR(1),rn @schoolworkFileLength INT,rn ----uploadDay SMALLDATETIME DEFAULT GETDATE(),rn @schoolworkFileType CHAR(5)rnASrn DECLARE @SchoolworkID INTrn SET @SchoolworkID = 0rn SELECT @SchoolworkID = (SELECT TOP 1 SchoolworkID FROM StudentSchoolwork WHERE(schoolworkPath = @schoolworkPath))------这里@SchoolworkID无法获取值,该怎么解决呢?rn-----PRINT @SchoolworkID-------rn IF (@SchoolworkID = 0)rn BEGINrn INSERT INTO StudentSchoolworkrn VALUES(@studentNO, @schoolworkType, @schoolworkPath, '0', @schoolworkFileLength, GETDATE(), @schoolworkFileType)rn ENDrn ELSErn BEGINrn UPDATE StudentSchoolworkrn SET studentNO = @studentNO, rn schoolworkFileLength = @schoolworkFileLength, rn uploadDay = GETDATE()rn WHERE SchoolworkID = @SchoolworkIDrn ENDrnGOrn
mysql 存储过程中的 prepare语句(存储过程动态增减表字段)
1.问题的由来前几天写项目的时候,有用到<em>存储</em><em>过程</em>,需要在<em>存储</em><em>过程</em>中创建一张临时表,然和在<em>动态</em>增减临时表的字段,所以就用到了mysql的prepare预编译<em>语句</em>。2.这个语法是干嘛的基本语法:PREPARE stmt from '你的sql<em>语句</em>'; EXECUTE stmt (如果sql有参数的话, USING xxx,xxx); // 这里USING的只能是会话变量 DEALLOCATE PREPA
存储过程动态产生的临时表数据在存储过程中如何访问
create procedure p_test rnasrnbeginrnexec('select * into #test from 表名')rnrnselect * from #testrnendrnrn上面的<em>存储</em><em>过程</em>中我<em>动态</em>产生了#test临时表,如果我在 p_test 中访问#test的据该如何访问例如:select * from #test
如何在存储过程中执行动态构造的查询语句?试过直接用sp_executeSql,可惜不行
rn现在项目用的是SQL Server 2005rnrn原句是,能正常执行rnWITH PartsCTE AS(Select ROW_NUMBER() OVER(order by [Date] Desc) as row,* From user_table)rnrn现在想将那个<em>查询</em><em>语句</em>换成是<em>动态</em>构造的(保存在◎tmpStr中),我应该怎样做?rnrn◎tmpStr = 'Select ROW_NUMBER() OVER(order by [Date] Desc) as row,* From user_table'rnrn使用sp_executeSql老是提示exec附近有错误。rnrn谢谢!
[求助]在存贮过程中的查询语句如何让它实现动态条件查询
我写了个存贮<em>过程</em>,其中有个隐式游标rnfor curl in (Select repo_code,repo_module,repo_name,sts From repo_tm rnWhere sts='A' And repo_code = nrepo_kind1rnand repo_module =nrepo_kind2rn  Order By repo_code )rn其中nrepo_Kind1,nrepo_kind2是存贮<em>过程</em><em>中的</em>变量,如果要实现<em>查询</em>条件<em>动态</em>,如实现结果为 repo_module in('11','12') and repo_code Not In ('9901','9902','9977'),也就是说实现nrepo_kind1,nrepo_kind2<em>动态</em>,可能有时为in 有时为= 有时为like ,在存贮<em>过程</em>中应该如何编写呢?rn请大大们多多指教!
存储过程中的SQL语句
[code=SQL]rnUSE [Warehouse]rnGOrn/****** Object: StoredProcedure [dbo].[SP_T_Operation_SelectAll] Script Date: 07/19/2012 14:21:07 ******/rnSET ANSI_NULLS ONrnGOrnSET QUOTED_IDENTIFIER ONrnGOrn------------------------------------rn--用途:模糊<em>查询</em> rn--项目名称:rn--说明:rn--时间:2012-7-17 15:00:36rn------------------------------------rnALTER PROCEDURE [dbo].[SP_T_Operation_SelectAll_InOut]rn(rn @SheetID varchar(20),rn @date1 varchar(25),rn @date2 varchar(25),rn @SheetOwner varchar(10),rn @CostCenterCode varchar(10),rn @ProductName nvarchar(100)rn)rnASrnBEGINrn DECLARE @sql nvarchar(MAX)rn SET @sql ='rn select rn a.SheetID,a.OperationDate,a.OriginalSheetID, rn c.ProductName,a.ReturnReason,rn casern when a.OriginalSheetID="" or a.OriginalSheetID is NULL then b.Quantityrn end as outs,rn casern when a.OriginalSheetID<>"" or a.OriginalSheetID is not NULL then b.Quantityrn end as ins,rn b.UnitPrice,rn d.UserName,b.CostCenterCodern from T_Operation a left join rn T_OperationDetail b on a.SheetID=b.SheetID rn left join T_Product c on b.ProductID=c.ProductIDrn left join T_User d on a. SheetOwner=d.UserIDrn where 1=1rn ' rn IF @SheetType IS NOT NULL AND @SheetType <>''rn SET @sql=@sql+' and A.SheetType ='+@SheetType;rn rn IF @date1 IS NOT NULL AND @date1<>'' and @date2 IS NOT NULL AND @date2<>''rn SET @sql=@sql+' and A.OperationDate >='''+ CONVERT(varchar(100), @date1, 120)+''' and A.OperationDate <>"" or a.OriginalSheetID is not NULL then b.Quantityrnend as ins,rn[/code]rn想实现当OriginalSheetID为空,则将Quantity当做OUTS输出rn当OriginalSheetID不为空,则将Quantity当做ins输出rn应该怎么写呢?
存储过程中使用游标
我写的<em>存储</em><em>过程</em>如下,但是结果返回的记录数是正确的,可就是每条记录里没有值,经查好像出现在游标的位置(bb为没有值),红字标志rncreate or replace procedure test(returnTable out sys_refcursor) authid current_user isrnbeginrn DECLARErn TYPE TYPE_TEMP_TABLE IS RECORD(rn CONSIGNNO VARCHAR2(80),rn CONSIGNID VARCHAR2(80),rn CONSIGNINDEXID VARCHAR2(50),rn RECPARTITIONNAME VARCHAR2(50),rn PAYPARTITIONNAME VARCHAR2(50),rn Favalidate VARCHAR2(50),rn Islocked VARCHAR2(50),rn SHIPID VARCHAR2(50),rn SHIPNAME VARCHAR2(50),rn VOYAGENO VARCHAR2(50),rn BOOKINGID VARCHAR2(50),rn CONSIGNTYPE VARCHAR2(50),rn BUSINESSTYPECODE VARCHAR2(50),rn BUSITYPEID VARCHAR2(10),rn OPERATETIME date,rn customername VARCHAR2(50)); rn myTempTable TYPE_TEMP_TABLE;rn ColStr VARCHAR2(1000);rn ValueStr VARCHAR2(1000);rn ROWSS number;rnBEGINrnSELECT COUNT(*)rn INTO ROWSSrn FROM USER_TABLESrn WHERE TABLE_NAME = 'TEMP_CY_NEW';rn IF ROWSS > 0 THENrn EXECUTE IMMEDIATE 'DROP TABLE fee.TEMP_CY_NEW';rn END IF;rn EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE fee.TEMP_CY_NEW(rn CONSIGNNO VARCHAR2(80),rn CONSIGNID VARCHAR2(80),rn CONSIGNINDEXID VARCHAR2(50),rn RECPARTITIONNAME VARCHAR2(50),rn PAYPARTITIONNAME VARCHAR2(50),rn Favalidate VARCHAR2(50),rn Islocked VARCHAR2(50),rn SHIPID VARCHAR2(50),rn SHIPNAME VARCHAR2(50),rn VOYAGENO VARCHAR2(50),rn BOOKINGID VARCHAR2(50),rn CONSIGNTYPE VARCHAR2(50),rn BUSINESSTYPECODE VARCHAR2(50),rn BUSITYPEID VARCHAR2(10),rn OPERATETIME date,rn customername VARCHAR2(50))' || 'ON COMMIT DELETE ROWS';rn [color=#FF0000]for bb in (SELECT * FROM T_FEE_ACCOUNT where BUSITYPEID='1')[/color] LOOPrn IF SUBSTR(bb.CONSIGNID,LENGTH(bb.CONSIGNID)-1,1)='I' THENrn select CONSIGNID as CONSIGNNO,rn CONSIGNID||'I' AS CONSIGNID,rn CONSIGNINDEXID,rn RECPARTITIONNAME,rn Paypartitionname,rn Favalidate,rn Islocked,rn SHIPID,rn SHIPNAME,rn VOYAGENO,rn BOOKINGID,rn CONSIGNTYPE,rn BUSINESSTYPECODE ,rn BUSITYPEID ,rn OPERATETIME,rn customername rn into myTempTablern from (select EnterConsign.ConsignID,rn EnterConsign.ConsignID || 'I' as ConsignTypeID,rn decode(bb.Favalidate,1,'已锁定',0,'未锁定','未锁定') Favalidate,rn decode(bb.Islocked,1,'已锁定',0,'未锁定','未锁定') Islocked,rn TO_CHAR(bb.CONSIGNINDEXID) AS CONSIGNINDEXID , rn TO_CHAR(bb.RECPARTITIONNAME) AS RECPARTITIONNAME, rn TO_CHAR(bb.Paypartitionname) AS Paypartitionname ,rn EnterConsign.ShipID,rn (Select ship.SHIPNAMErn from BAS.t_Bas_Ship shiprn where ship.shipid =rn EnterConsign.ShipID) as SHIPNAME,rn EnterConsign.VoyageNO,rn EnterConsign.BookingID,rn '进场' as ConsignType,rn '1' as BUSITYPEID,rn (Select busi.businesstypenamern from bas.t_bas_businesstype busirn where busi.businesstypecode =rn EnterConsign.Businesstypecode) as BusinessTypeCode,rn EnterConsign.OperateTime,rn (select customershortnamern from crms.t_crm_customer arn where a.customerid = EnterConsign.customerid)rn as customernamern from CY.t_Cy_d_Enterdepotconsign EnterConsign)rn WHERE CONSIGNID || 'I' = bb.CONSIGNID;rn END IF;rn ColStr := 'CONSIGNNO,CONSIGNID,CONSIGNINDEXID,RECPARTITIONNAME,PAYPARTITIONNAME,Favalidate,Islocked,SHIPID,SHIPNAME,VOYAGENO,BOOKINGID,CONSIGNTYPE,BUSINESSTYPECODE,BUSITYPEID,OPERATETIME,customername';rn ValueStr := '''' || myTempTable.CONSIGNNO || ''',''' ||rn myTempTable.CONSIGNID || ''',''' ||rn myTempTable.CONSIGNINDEXID ||''',''' || rn myTempTable.RECPARTITIONNAME || ''',''' ||rn myTempTable.PAYPARTITIONNAME || ''',''' ||rn myTempTable.Favalidate || ''',''' ||rn myTempTable.Islocked || ''',''' ||rn myTempTable.SHIPID || ''',''' ||rn myTempTable.SHIPNAME || ''',''' ||rn myTempTable.VOYAGENO || ''',''' ||rn myTempTable.BOOKINGID || ''',''' ||rn myTempTable.CONSIGNTYPE || ''',''' ||rn myTempTable.BUSINESSTYPECODE || ''',''' ||rn myTempTable.BUSITYPEID || ''',''' ||rn myTempTable.OPERATETIME || ''',''' ||rn myTempTable.customername ||'''';rn execute immediate 'insert into fee.TEMP_CY_NEW(' || ColStr || ') values(' || ValueStr || ')'; rn END LOOP;rn OPEN returnTable FOR 'SELECT * FROM TEMP_CY_New ';rn END;rn END test;rn
存储过程中的错误
set serveroutput on size 10000;rncreate or replace procedure set_sal(p_empno emp.empno%type)rnas rn p_sal emp.sal%type;rn p_deptno emp.deptno%type;rnbeginrn select sal , deptno into p_sal,p_deptno from emp where empno=p_empno;rn case p_deptnorn when 10 then update emp set p_sal=p_sal+150;rn when 20 then update emp set p_sal=p_sal+200;rn when 30 then update emp set p_sal=p_sal+250;rn else set p_sal=p_sal+300;rn end case;rn commit;rnexceptionrn when no_data_found then rn dbms_output.put_line('the department doesn''t exists!');rnend set_sal;rnrnrn警告:Warning: compiled but with compilation errors
存储过程中使用事务
beginrn rninsert into user values(id,username,userpwd,now(),0);rninsert into userdetails values(id,'',0,now(),0,'');rninsert into userbbs values(id,0,0,0,0,0,now(),'','',0,0);rninsert into userworkexperience values(now(),'',id);rnrnendrnrn需要在多张表中建立新纪录.但是不能出错.rn找了很多资料但是<em>语句</em>写出来都报错.rn没有办法只有请各位大大指教了.
orcale存储过程中的异常
create table k (rn k_name varchar2(10) not null,rn k_number number(6)rnrn);rnrnrnrnrnrncreate or replace procedure text_1(s_id in number, s_on out varchar2)rnrnisrnex_my exception;rnv_name varchar2(20);rnrnbeginrnrn beginrn rn select k_name into v_name from k where k_number=s_id;rn exception rn when no_data_found then rn raise ex_my;rn end;rn commit;rnexceptionrn when ex_my thenrn dbms_output.put_line('该数据不存在');rnend;rnrndeclarernss varchar(20);rnbeginrn text_1(1,ss);rnend; rn上面有<em>查询</em>异常了,但是我想有个插入的怎么写?rn
存储过程中的一段循环语句
原来这段<em>语句</em>是FireBird数据库的,现在要转成Oracle,rn[code=sql]rn……rnFORrn SELECT count(*) as cnt, cardsn, sum(usetime) as totaltimern , mod(extract(hour from leasetime) + 24 - :starthour, 24) / 8 as timeslicern FROM tbleaserecrn WHERE (leasetime >= :fromdate) and (LeaseTime < :todate) and (vipcardsn > 5000)rnrn GROUP BY cardsn, mod(extract(hour from leasetime) + 24 - :starthour, 24) / 8rn ORDER BY cardsn,timeslicern into :reccount, :newcardsn, :usetime, :slicern DOrn……rn……rn[/code]rn现在要转成Oracle,求大神指教rn我自己胡编乱造了点,但是编译报错。rn我自己胡编乱造的<em>语句</em>如下rn[code=sql]rnwhile rn SELECT count(*) as cnt, cardsn, sum(usetime) as totaltime,rn mod(extract(hour from leasetime) + 24 - starthour, 24) / 8 as timeslicern FROM tbleaserecrn WHERE (leasetime >= fromdate) and (LeaseTime < todate) and (vipcardsn > 5000)rnrn GROUP BY cardsn, mod(extract(hour from leasetime) + 24 - starthour, 24) / 8rn ORDER BY cardsn,timeslicern rn loop; rn rn beginrn reccount:=cnt, newcardsn:=cardsn, usetime:=totaltime, slice:= timeslice;rn[/code]rn之后在Mod哪一行就开始报错了rn错误如下rn[code=text]rn错误(72,5): PLS-00103: 出现符号 "SELECT"在需要下列之一时: ( - + case mod new not null continue avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date pipe purge rn[/code]rnrn然后loop哪一行也有错误rn[code=text]rn错误(80,5): PLS-00103: 出现符号 "LOOP"在需要下列之一时: . ( , * @ % & - + ; / at for mod remainder rem asc desc || multiset ……rn[/code]rnrn请大神指点
存储过程中操作结果集
现在需要写一个<em>存储</em><em>过程</em>rn如:rn [code=SQL]rncreate table user_inforn(rn uid int identity(1,1) primary key,rn uname varchar(50)rn)rngornrninsert into user_info values('张三')rninsert into user_info values('李四')rninsert into user_info values('王五')rninsert into user_info values('赵六')rninsert into user_info values('陈七')rngornrnrncreate proc sp_operatordatarn @idsrnasrn declare @sql varchar(4000)rn 。。。。。。--省略部分rngorn[/code]rnrn我需要达到的目的,当执行这个<em>存储</em><em>过程</em>,传入参数(1,3,5) 然后在<em>存储</em><em>过程</em>里面<em>查询</em>出结果,rn我需要遍历操作这个结果集,然后通过判断取出我想要的数据,最后执行其它的<em>语句</em>rn如:<em>存储</em><em>过程</em>中<em>查询</em>出uid为1,3,5的用户,然后操作<em>查询</em>结果,将uid为3、5的用户过滤出来rnrn
orale存储过程中的if语句
在oracle<em>存储</em><em>过程</em><em>中的</em>if<em>语句</em>语法结构是什么?哪位大哥告诉我一哈
存储过程中的变量问题
写了一个<em>存储</em><em>过程</em>,代码如下rnrn[code=SQL]rnCREATE PROCEDURE `ImportOldData`()rn NOT DETERMINISTICrn CONTAINS SQLrn SQL SECURITY DEFINERrn COMMENT ''rnBEGINrn DECLARE max_s_id INT;rn DECLARE max_a_id INT;rn rn SELECT max_s_id = MAX(s_id)rn FROM s_New;rn SELECT max_a_id = MAX(a_id)rn FROM a_New;rnrn #set max_s_id = 55; rn rn INSERT INTO s_Newrn (rn s_id,rn s_parent,rn s_name,rn p_listrn)rnSELECT rn s_id + max_s_id as s_id,rn CASE s_parent WHEN -1 THEN -1 ELSE s_parent + max_s_id2 END as s_parent,rn s_name,rn `func_addchar`(p_list,max_s_id3) as p_listrnFROM s;rn rn INSERT INTO a_Newrn (rn a_id,rn a_sort, rn a_titlern )rn SELECT a_id + max_a_id,rn a_sort + max_s_id,rn a_titlern FROM a;rnrnEND;rnrn[/code]rnrn执行的时候第一个插入<em>语句</em>有问题,只有第一列有效,结果正确,另外2个用到变量max_s_id计算的列的值就是错误的rn(其中第二列case计算的全是0,第四列函数计算的全是-1...)rn而第二个插入<em>语句</em>没有执行.rnrnSELECT max_s_id = MAX(s_id)rn FROM s_New;rn我将这里改成rnset max_s_id = 55rn第一个插入<em>语句</em>就没问题(第二个仍是没有执行)rnrn对mysql不太熟,请大家帮忙看看什么原因rn谢谢.rn
存储过程中,sql优化.........
[code=SQL]rnINSERT INTO B21_01rn (APB001, --APB001 NUMBER(4) Y 年 rn APB002, --APB002 NUMBER(2) Y 月 rn AAB301, --AAB301 VARCHAR2(6) 地域 rn AAE043, --AAE043 VARCHAR2(6) 数据期别 rn AAC003, --AAC003 VARCHAR2(30) Y 姓名 rn AAC002, --AAC002 VARCHAR2(18) 身份证 rn AAC001, --AAC001 VARCHAR2(14) 个人编号 rn AAC006, --AAC006 VARCHAR2(8) Y 生日 rn AAC004, --AAC004 VARCHAR2(3) Y 性别 rn AAC005, --AAC005 VARCHAR2(3) Y 民族 rn AAC009, --AAC009 VARCHAR2(3) Y 户口性质 rn AAC011, --AAC011 VARCHAR2(3) Y 文化程度 rn AJC093, --AJC093 VARCHAR2(3) Y 失业原因 rn AJC094, --AJC094 VARCHAR2(8) Y 本次失业登记日期 rn AAB019, --AAB019 VARCHAR2(3) Y 失业前所在单位类型 rn AAB020, --AAB020 VARCHAR2(3) Y 失业前所在单位经济类型 rn AAB022, --AAB022 VARCHAR2(6) Y 失业前所在单位行业类型 rn AAE170, --AAE170 VARCHAR2(3) Y 享受失业保险状态 rn ACA111, --ACA111 VARCHAR2(7) Y 原从事职业工种 rn AAC014, --AAC014 VARCHAR2(3) Y 专业技术职务 rn AAC015, --AAC015 VARCHAR2(3) Y 职业资格等级 rn AJC00B, --AJC00B NUMBER(3) Y 失业登记前连续就业月数 rn AAC013, --AAC013 VARCHAR2(3) Y 原用工形式 rn AJC00C, --AJC00C NUMBER(3) Y 接受培训次数 rn AAC215, --AAC215 NUMBER(3) Y 接受推荐次数 rn AJC00D, --AJC00D NUMBER(3) Y 接受指导次数 rn AJC00M, --AJC00M VARCHAR2(3) Y 灵活就业标志 rn ACE119, --ACE119 VARCHAR2(8) Y 注销失业登记时间 rn AJC00A, --AJC00A VARCHAR2(3) Y 注销失业登记原因 rn AJC00G, --AJC00G VARCHAR2(3) Y 再就业单位类型 rn AJC00H, --AJC00H VARCHAR2(3) Y 再就业单位经济类型 rn AJC00I, --AJC00I VARCHAR2(6) Y 再就业单位行业类型 rn AJC00J, --AJC00J VARCHAR2(7) Y 再就业职业(工种) rn AJC00L, --AJC00L VARCHAR2(3) Y 安置公益性岗位标志 rn AJC00N, --AJC00N VARCHAR2(3) Y 自谋职业标志 rn APC004, --APC004 NUMBER(1) Y 是否新增人员,后更新,默认为0 rn APC011, --APC011 VARCHAR2(3) Y 年龄段,后更新 rn APC006, --APC006 NUMBER(4) Y 年龄,直接根据生日计算出来年龄 rn APC012, --APC012 VARCHAR2(3) Y 接受培训情况 rn APC013, --APC013 VARCHAR2(3) Y 接受推荐情况 rn APC014) --APC014 VARCHAR2(3) Y 接受指导情况 rn SELECT V_YEAR,rn V_MON,rn T.AAB301,rn T.AAE043,rn TRIM(T.AAC003),rn T.AAC002,rn T.AAC001,rn T.AAC006,rn DECODE(TRIM(T.AAC004), '1', '1', '2', '2', NULL, '000', '999'), --性别rn COMMON_FUN_UTIL.GET_ZB180('AAC005', TRIM(T.AAC005)),rn DECODE(TRIM(T.AAC009), '1', '10', '2', '20', NULL, '000', '999'), --户口性质rn COMMON_FUN_UTIL.GET_ZB180('AAC011', TRIM(T.AAC011)),rn COMMON_FUN_UTIL.GET_ZB180('AJC093', TRIM(T.AJC093)),rn T.AJC094,rn DECODE(TRIM(T.AAB019),rn '10',rn '10',rn '20',rn '50',rn '30',rn '30',rn '40',rn '70',rn NULL,rn '000',rn '999'), --失业前所在单位类型rn COMMON_FUN_UTIL.GET_ZB180('AAB020', TRIM(T.AAB020)),rn COMMON_FUN_UTIL.GET_ZB180('AAB022', TO_NUMBER(TRIM(T.AAB022))),rn COMMON_FUN_UTIL.GET_ZB180('AAE170', TRIM(T.AAE170)),rn COMMON_FUN_UTIL.GET_ZB180('ACA111', TRIM(T.ACA111)),rn DECODE(TRIM(T.AAC014),rn '1',rn '1',rn '2',rn '2',rn '3',rn '3',rn '4',rn '4',rn NULL,rn '000',rn '999'), --专业技术职务rn DECODE(TRIM(T.AAC015),rn '1',rn '1',rn '2',rn '2',rn '3',rn '3',rn '4',rn '4',rn '5',rn '5',rn '0',rn '0',rn NULL,rn '000',rn '999'), --职业资格等级rn T.AJC00B,rn DECODE(TRIM(T.AAC013),rn '1',rn '1',rn '2',rn '2',rn '3',rn '3',rn '4',rn '4',rn '9',rn '9',rn NULL,rn '000',rn '999'), --原用工形式rn T.AJC00C,rn T.AAC215,rn T.AJC00D,rn DECODE(TRIM(T.AJC00M), '1', '1', '0', '0', NULL, '000', '999'), --灵活就业标志rn T.ACE119,rn DECODE(TRIM(T.AJC00A),rn '10',rn '10',rn '20',rn '20',rn '30',rn '30',rn '40',rn '40',rn '50',rn '50',rn '60',rn '60',rn '70',rn '70',rn '90',rn '90',rn NULL,rn '000',rn '999'), --注销失业登记原因rn DECODE(TRIM(T.AJC00G),rn '10',rn '10',rn '20',rn '50',rn '30',rn '30',rn '40',rn '70',rn NULL,rn '000',rn '999'), --再就业单位类型rn COMMON_FUN_UTIL.GET_ZB180('AAB020', TRIM(T.AJC00H)),rn COMMON_FUN_UTIL.GET_ZB180('AAB022', TRIM(T.AJC00I)),rn COMMON_FUN_UTIL.GET_ZB180('ACA111', TRIM(T.AJC00J)), --再就业职业工种rn DECODE(TRIM(T.AJC00L), '1', '1', '0', '0', NULL, '000', '999'), --安置公益性岗位标志rn DECODE(TRIM(T.AJC00N), '1', '1', '0', '0', NULL, '000', '999'), --自谋职业标志rn 0, --APC004 NUMBER(1) Y 是否新增人员,后更新,默认为0 rn COMMON_FUN_UTIL.GET_NLD(V_YEAR, T.AAC006), --APC011 VARCHAR2(3) Y 年龄段,后更新 rn COMMON_FUN_UTIL.GET_NL(V_YEAR, T.AAC006), --APC006 NUMBER(4) Y 年龄,直接根据生日计算出来年龄 rn COMMON_FUN_UTIL.GET_PXQK(NVL(T.AJC00C, -1)), --APC012 VARCHAR2(3) Y 接受培训情况 rn COMMON_FUN_UTIL.GET_TJQK(NVL(T.AAC215, -1)), --APC013 VARCHAR2(3) Y 接受推荐情况 rn COMMON_FUN_UTIL.GET_ZDQK(NVL(T.AJC00D, -1)) --APC014 VARCHAR2(3) Y 接受指导情况 rn FROM JHK_JF11 Trn WHERE T.AAB301 LIKE V_V_AAB301rn AND T.AAE043 = V_AAE043;rnrnrn 其中COMMON_FUN_UTIL.GET_ZB180这个函数的内容如下: rn ------------------------------rn -- 转换80项指标代码到180项指标rn ------------------------------rn FUNCTION GET_ZB180(V_BBB100 IN VARCHAR2, V_BBB080 IN VARCHAR2)rn --V_BBB100 代码名称rn --V_BBB080 80项代码rn RETURN VARCHAR2 ISrn RESULT VARCHAR2(6);rn V_R VARCHAR2(6);rn BEGINrn IF V_BBB080 IS NULL OR TRIM(V_BBB080) IS NULL THENrn RESULT := '000';rn ELSErn BEGINrn SELECT BBB180rn INTO V_Rrn FROM BB10 Trn WHERE T.BBB100 = V_BBB100rn AND T.BBB080 = V_BBB080rn AND ROWNUM < 2;rn EXCEPTIONrn WHEN NO_DATA_FOUND THENrn RESULT := '999';rn END;rn IF V_R IS NULL OR TRIM(V_R) IS NULL THENrn RESULT := '999';rn ELSErn RESULT := V_R;rn END IF;rn END IF;rn RETURN(RESULT);rn END;rn而GET_NLD()与GET_NL及GET_PXQK(),GET_TJQK(),GET_ZDQK()函数中不用<em>查询</em>其它表,基本就是case when.......我就不例出来,rn上面的insert<em>语句</em>,我加工一个市一个月的数据用了1573秒多(这个月数据有53372条),而JHK_JF11总的记录数才589121。好慢。我知道慢的原因是因为多次调用GET_ZB180()这个函数,而没办法,我必须做新老代码转换。将jf11的代码值对应为现在的新代码值。另外jf11表有(aab301,aae043)的复合索引。rn请高手帮我优化下这个代码。是不是一个一个字段去更新会快点???rn[/code]
存储过程中的奇怪问题!
CREATE PROCEDURE create_rec rn@comid char(4),rn@receipter char(5),rn@receiptdate datetime,rn@memoh varchar(50),rn@matno char(8),rn@receiptq numeric(10,2),rn@unit varchar(4),rn@veridate datetime,rn@lgpbe char(8),rn@veriresult varchar(1),rn@bz int,rn@id char(11),rn@memoi varchar(50) ,rn@receiptno char(11) outputrnASrndeclare @max_id char(11), @year char(4),@month char(2),@day char(2),@temp_id char(11)rn--根据@bz判断是否生成新的入库单号rnif @bz=0 rnbeginrn--生成新的入口单号rn...rn--把记录插入到rec_head表中rn...rnendrnelsernbeginrn...rnendrn--把记录插入到rec_item表中rn...rnGOrn参数@memoi明明定义的是输入参数,可是在delphi中运行这个<em>存储</em><em>过程</em>时却出现这样的出错提示:rn“---------------------------rnDebugger Exception Notificationrn---------------------------rnProject fixing.exe raised exception class EOleException with message '形式参数 '@memoi' 定义为 OUTPUT,但实际参数却未声明为 OUTPUT。'. Process stopped. Use Step or Run to continue.rn---------------------------rnOK Help rn---------------------------rn”rn为什么会这样?
存储过程中的变量
请教一个问题,就是<em>存储</em><em>过程</em>中我SQL<em>语句</em>的数据库用变量怎么表示?rnrn例如:rnrnselect @name=name from ??? where id = @idrnrn这里我想让???部分是一个变量batacasern请问该如何表示?
存储过程中的表名处理
在<em>存储</em><em>过程</em>欲做<em>查询</em>,待<em>查询</em>表名来自变量,问大虾怎样处理.不能组串处理,因为整个<em>存储</em><em>过程</em>很大,不能把整个处理包在字符串中.急,zai
存储过程中的参数的问题
[code=sql]rnrncreate table #tableTest(id int identity , name varchar(20),age int,)rngorninsert into #tableTestrnselect '小明',23 union allrnselect '小红',28 union allrnselect '小军',27rngornselect *from #tableTestrngornrnrncreate proc procTestrn@name varchar(20),rn@age int,rn@IDs varchar(30)rnasrnbeginrnselect *from #tableTest where 1=1rnendrnrn--当我传入@name参数等于 小明,23岁,还有ID在(1,3)的时候rn--我怎么可以弄成可选的参数rn--比如,name不为空时候rnselect *from #tableTest where 1=1 and name like '小明'rn--如果name参数为空的时候,IDs参数不为空的时候rnselect *from #tableTest where 1=1 and id in(1,3)rn--请问一下,就有参数不为空的时候<em>存储</em><em>过程</em><em>中的</em>SQL追加条件,为空的时候就不追加,这样带可选参数的<em>存储</em><em>过程</em>怎么写,以及怎么调用,请帮小弟写一个实例rn[/code]
存储过程中like的问题
CREATE PROCEDURE GetBoardIDByParentPathlikern @TableName nvarchar(50),rn @ParentPath nvarchar(50)rnASrn SET NOCOUNT ONrn DECLARE @STR nvarchar(50)rn SELECT @STR = LTRIM(RTRIM(@ParentPath))rn EXEC ('SELECT BoardID FROM '+@TableName+' WHERE ParentPath like '+@STR+'')rn RETURN 0rnGOrnrn--运行后rnEXEC GetBoardIDByParentPathlikernshop_TreeBoard,rn'0,1,7'rn----------------rn服务器: 消息 170,级别 15,状态 1,行 1rn第 1 行: ',' 附近有语法错误。
SQL2000存储过程动态sql
数据表中有12列,M1,M2.........M12对应12个月的重量,我想数据 取到的 weight重量,根据月份分别UPDATE相应的列。如现在201701月就UPDATE M1字段。。以此类推。rn我想在生成SQL<em>语句</em>。。[img=https://img-bbs.csdn.net/upload/201701/02/1483338535_746073.png][/img]rnrn declare @wk_yy varchar(4)rndeclare @wk_mm varchar(2),rn @sql varchar(5000),rn @line_no varchar(2),rn @wlmc_no1 varchar(2),rn @weight numeric(18,6)rnset @wk_mm = '01'rnset @weight = 2rnset @sql = 'update cb_tbfyhjbs set m'+@wk_mm+ '=' + @weight --+ 'where wk_yymm = '+@wk_yy --+rn -- 'and line_no = '+@line_no+ 'and wlmc_no1 = ' + @wlmc_no1+''rnprint @sqlrn exec( 'update cb_tbfyhjbs set m'+@wk_mm+ '=' + @weight + rn 'where wk_yymm = '2016' 'rn 'and line_no = '+@line_no+ 'and wlmc_no1 = ' + @wlmc_no1')'rn这样的话一直提示rn服务器: 消息 8114,级别 16,状态 5,行 9rn将数据类型 varchar 转换为 numeric 时出错。rn不知道怎么弄了
存储过程中创建表
我要再<em>存储</em><em>过程</em>中创建表,但是表名是个变量,如:rnCREATE PROCEDURE TableCreaternrn @ID intrnrnASrnrn Declare @TableName varchar(50)rnrn set @TableName = 'Table' + Convert(varchar(50),@ID)rnrn create table @TableName ( tableName varchar(20) not null )rnrn但是SQL 不允许表名是变量,我该如何处理?
存储过程中事务的问题
我有以下<em>存储</em><em>过程</em>:rncreate procedure proc_aarnrn@a varchar(10).rn@b varchar(10)rn@ret intrnas rnrnbegin tranrnrndeclare @id intrnselect @id=id from arnselect @id = @id + 1rninsert into b(a,id) values(@a,@id)rnif @error<>0rnbeginrn rollback tranrn set @ret=-1rn returnrnendrnrnupdate a set id=@idrnif @error<>0rnbeginrn rollback tranrn set @ret=-1rn returnrnendrnrncommit tranrnset @ret=1rnreturnrnrn客户端调用此<em>存储</em><em>过程</em>的频率很高的,现在两张表a和b总是死锁rnrnrn
存储过程中随机数的问题
我要在<em>存储</em><em>过程</em>中,随机产生一组6位数的int型数字?应该怎么做呢?rn
存储过程中拆分
如何在<em>存储</em><em>过程</em>里把220个汉字的字符串,每70个字符截取一回,在循环现在出来
存储过程中,如何返回值
....rnEXEC ('DELETE train WHERE train_id IN (' + @selecteds + ')')rn如果我加上return 1则提示:在此上下文中不能使用带有返回值的 RETURN <em>语句</em>rn我主要是想这样:删除成功时,则返回为1,否则为-1rn
存储过程中引用变量出错
要求是将第一条<em>语句</em><em>中的</em>文件名111.xls替换成一变量@file,我自己还是没掌握单引号的用法,写出的<em>语句</em>老是出错。rnexec master..xp_cmdshell 'move d:\pic\111.xls d:\pic\abc\111.xls'rnrn我写的是:rnexec master..xp_cmdshell 'move d:\pic\'''+@file+''' d:\pic\abc\'''+@file+''''
关于存储过程中的output
1, 怎么我看到有些<em>存储</em><em>过程</em>同一个参数要output 两次的呢?同一个参数,一个有N' 一个没有.就是输出unicode的意思??为什么那个没有N' rnrn[code=SQL]exec sp_execute @strSQL,N'@pageCounts int output',@pageCounts int output' [/code]rnrnrn2, output 是用 在 declare 参数 还是 内部参数呢?比如声明的时候 rnrnrn[code=SQL]SQL codecreate proc eern@w int output (我见过这样用的)rnasrndeclare @ww int output (我也见过这样用的)rn..rn...rn....rn.....rn......[/code]rnrnrn究竟那个才是对呢?谢谢
存储过程中的参数问题
我写了一个这样的<em>存储</em><em>过程</em>rncreate procedure TableSelectrn@tablename varchar(80)rnasrnbeginrn SELECT * FROM @tablenamernendrnrn老提示我“必须声明变量@tablename“,是不是参数不能用在From后面rn正确的写法应该是什么。
存储过程中变量的问题
CREATE PROC test1rn @TableName sysname,rn @NodeID int,rn @NodeTopID int outrnASrn DECLARE @TopID intrn EXEC('SELECT @TopID=isnull(max(TopID), 0)+1 FROM '+@TableName+' WHERE ParentID='+@NodeID+'')rn SET @NodeTopID=@TopIDrnGOrnrn@TopID=isnull(max(TopID), 0)+1 这里出错,应该怎么写呀?
存储过程中的返回值问题
<em>存储</em><em>过程</em><em>中的</em>RETURN值在代码中如何接收?rnexists的值怎么来的?rnALTER PROCEDURE HR_Personnel_Loginrn(rn @UserID varchar(50),rn @Password varchar(50)rn)rn ASrnif existsrn(rn SELECT USRID rn FROM HR_PersonnelInfo rn WHERE USRID = @UserID rn AND UsrPassword = @Passwordrn)rnRETURN 0 rnif existsrn(rn SELECT USRID rn FROM HR_PersonnelInfo rn WHERE USRID = @UserID rn)rnRETURN 1rnRETURN 2rnrn
存储过程中创建数据库及表
数据库的名称通过参数传递rncreate PROCEDURE SP_Build_ImageDB(rn @year varchar(4)rn )rnrnBEGIN TRANSACTIONrn exec('create database UCMLSample'+@year)rn rn exec('use UCMLSample'+@year+'rn CREATE TABLE Sample_Image (rn Sample_ImageOID uniqueidentifier NOT NULL ,rn ImageName varchar (100) COLLATE Chinese_PRC_CI_AS NULL ,rn ImageData image NULL ,rn ImageInfo varchar (100) COLLATE Chinese_PRC_CI_AS NULL ,rn Sample_Samples_FK uniqueidentifier NULL ,rn PRIMARY KEY CLUSTERED rn (rn Sample_ImageOIDrn ) ON PRIMARY rn ) ON PRIMARY TEXTIMAGE_ON PRIMARYrn ')rnexec('use UCMLSample'+@year+'rn insert into Sample_Image .......rn')rn rn if @@ERROR<>0rn beginrn select @ErrNum = @@ERROR, @ErrMsg = '生成失败!'rn ROLLBACK TRANSACTIONrn select @ErrNum 'ErrNum', @ErrMsg 'ErrMsg'rn RETURN @@ERRORrn endrnrn COMMIT TRANSACTIONrnrn编译虽然通过了,但执行时会报错,请教各位有没有其他的好方法?
存储过程中调用函数的问题!
问题1:rn   函数:rn DELIMITER $$rn DROP FUNCTION IF EXISTS `accdb`.`countN` $$rn CREATE FUNCTION `accdb`.`countN` (l int,p float) RETURNS FLOATrn BEGINrn return (l*p);rn END $$rn DELIMITER ;rn   <em>存储</em><em>过程</em>调用函数:rn   DELIMITER $$rn   DROP PROCEDURE IF EXISTS `accdb`.`SP_Count` $$rn   CREATE PROCEDURE `accdb`.`SP_Count` ()rn   BEGINrn    select countN('5','5.7');rn   END $$rn   DELIMITER ;rn   在调用<em>存储</em><em>过程</em>后没有显示任何结果,也没有提示任何错误,哪儿写的不对,请大虾指教!rn问题2:rn   假设A表中记录的结构为id,name,l,p.现想将A表<em>中的</em>记录存入B表,即id,name,l*p,就是B表<em>中的</em>第3字段是A表中第3,第4字段的乘积rn 这个能否用MYSQL的<em>存储</em><em>过程</em>及函数实现?多谢达人指导!
存储过程中 一个小问题:
我在里面写:rn1 insert into BW_CT_ProductAbnRstrn2 (RegisterSID,CorpSID,BMonth,CustomerSID,SALEQUANTITY,UnsalableQty,UNSALABLERATE,SALABLEQTY,SALABLERATE,STATUS) rn3 SELECT SEQ_CT_TOTALABNORMITYRST.nextval,rn4 A.CorpSID,rn5 V_Statmomth,rn6 A.CUSTOMERSID,rn7 A.SALEQUANTITY,rn8 ....................................................rnrn在运行时 说第一行报:SQL Statement ignored rn 第三行报:此处不允许序号 rnrn什么原因啊?~ rnrnrnSEQ_CT_TOTALABNORMITYRST.nextval不能用嘛?~
orcle 10g 培训资料下载
orcle 10g 培训材料 pdf ORACLE 10G 数据库管理培训 相关下载链接:[url=//download.csdn.net/download/bwl007/3615576?utm_source=bbsseo]//download.csdn.net/download/bwl007/3615576?utm_source=bbsseo[/url]
两个opc数据读取demo下载
两个用c#写的opc数据读取demo,两个实例. 相关下载链接:[url=//download.csdn.net/download/jididebing/8022257?utm_source=bbsseo]//download.csdn.net/download/jididebing/8022257?utm_source=bbsseo[/url]
LabVIEW Scripting 编程指南下载
LabVIEW Scripting 编程指南,详细描述了,labview开发过程。 相关下载链接:[url=//download.csdn.net/download/qq_23028299/8960289?utm_source=bbsseo]//download.csdn.net/download/qq_23028299/8960289?utm_source=bbsseo[/url]
相关热词 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天 c#func链接匿名方法 c#怎么创建文件夹 c#从键盘接收空格 c#da/ad c#部门请假管理系统 c#服务器socket c# 默认的访问修饰符
我们是很有底线的