oracle 怎么执行动态sql语句? [问题点数:30分,结帖人huhanlinhhl]

Bbs1
本版专家分:0
结帖率 93.75%
Bbs7
本版专家分:27232
Blank
红花 2011年2月 Oracle大版内专家分月排行榜第一
2010年11月 Oracle大版内专家分月排行榜第一
2010年10月 Oracle大版内专家分月排行榜第一
Blank
黄花 2010年9月 Oracle大版内专家分月排行榜第二
Blank
蓝花 2011年4月 Oracle大版内专家分月排行榜第三
2011年3月 Oracle大版内专家分月排行榜第三
2011年1月 Oracle大版内专家分月排行榜第三
Bbs7
本版专家分:14869
Blank
红花 2011年4月 Oracle大版内专家分月排行榜第一
Blank
黄花 2011年6月 Oracle大版内专家分月排行榜第二
2011年5月 Oracle大版内专家分月排行榜第二
Bbs6
本版专家分:7981
Blank
红花 2012年4月 Oracle大版内专家分月排行榜第一
Bbs2
本版专家分:223
Bbs1
本版专家分:99
Bbs7
本版专家分:27611
Blank
红花 2008年7月 Oracle大版内专家分月排行榜第一
2008年6月 Oracle大版内专家分月排行榜第一
2008年5月 Oracle大版内专家分月排行榜第一
Blank
黄花 2008年9月 Oracle大版内专家分月排行榜第二
2008年8月 Oracle大版内专家分月排行榜第二
2008年4月 Oracle大版内专家分月排行榜第二
Bbs2
本版专家分:166
oracle 存储过程 动态sql语句
注意事项: 在字符串中 ‘’ 代表一个‘ 。例:’select ” ” ,a from table’ 中 CREATE OR REPLACE PROCEDURE sp_lisgetoutpfee ( card_type in VARCHAR2, card_no in VARCHAR2, start_date in VARCHAR2, end_date in VARCHAR2, is_vail...
SQL函数怎么执行动态sql语句呢?
我想要的效果是输入sql<em>语句</em> 返回结果rnselect dbo.row2col(' select top 1 car_name from Car ') rn rn rnALTER function [dbo].[row2col](@sql varchar(100))rnReturns realrnAs rnBeginrndeclare @s varchar(8000)rnset @s = ''rn EXEC sp_executesql @sqlrnReturn @srnEndrn rnrn这样提示rn只有函数和某些扩展存储过程才能从函数内部<em>执行</em>。rn要<em>怎么</em>写呢? rn
这样的动态SQL怎么执行
开发项目,需要一次性<em>执行</em>.sql文件中的<em>语句</em>,遇到如下.sql文件:rncreate table tabArn( col1 char(10),rn col2 char(10),rn primary key(col1) constraint pk_tabarn);rncreate table tabBrn(rn col1 char(10),rn colA char(10),rn colB char(10),rn rn foreign key(col1) references tabA(col1) constraint fk_tabB_tabArnrn);rnrn在dbaccess中用sql->load->run可以正确运行,但在FGL中,用读入该文件内容到一字符串中,PREPARE时就出错,提示“外键约束被引用的表不存在!”。如果用“WHENEVER ERROR CONTINUE”,到EXECUTE时就报“<em>语句</em>未准备”的错误。rn<em>怎么</em>办?难道这样的<em>语句</em>一定要分两次PREPARE、EXECUTE吗?rn
db2 动态sql语句无法执行
create procedure p1()rnlanguage sqlrnbeginrndeclare sql1 varchar(8000);rnend;rnrn删除end,添加或删除;后都无法<em>执行</em>,无论在db2cc还是db2cmd都无法<em>执行</em>。。rnrn报错如下:rnSQL0104N An unexpected token "END-OF-STATEMENT" was found following "e sql1 rnvarchar(8000)". Expected tokens may include: "". LINE rnNUMBER=4. SQLSTATE=42601rnrnendrnDB21034E The command was processed as an SQL statement because it was not a rnvalid Command Line Processor command. During SQL processing it returned:rnSQL0104N An unexpected token "END-OF-STATEMENT" was found following "end". rnExpected tokens may include: "JOIN ". SQLSTATE=42601rnrnSQL0104N An unexpected token "END-OF-STATEMENT" was found following "end". Expected tokens may include: "JOIN rn
动态sql语句执行有问题……
参考 [url=http://topic.csdn.net/u/20110711/11/430915bd-9cf8-4374-af14-682454c03879.html] http://topic.csdn.net/u/20110711/11/430915bd-9cf8-4374-af14-682454c03879.html[/url]rnrn生成的sql<em>语句</em>是这样的rnrninsert into test select * from test_201107;rnrnrn单独拿出来就可以rn但是用PREPARE STML FROM @ASQL;rn就不行
在查询分析器中执行动态SQL语句
在查询分析器中有如下代码rnrndeclare @sql varchar(125)rnset @sql ='select * from jobs' --该@sql是动态生成的rn下面如何<em>执行</em>该<em>语句</em>
[再次求助]动态sql语句执行
一天问了三次有关的问题rndeclare @sql varchar(1000)rnset @sql = 'select '+convert(varchar,t_1)+'from table_a'rn我<em>执行</em>@sql,但是会提示说t_1无效。rnrn要如何解决这个问题。
mysql 存储过程,执行动态sql语句
DROP PROCEDURE IF EXISTS sp_name; create procedure sp_name() begin declare _userid,_id,no_rs int; declare sitelist CURSOR for select userid,id from eop_site ; DECLARE CONTINUE HANDLER F...
游标怎么执行动态SQL呀
我有一条<em>语句</em>是动态的 rnselect a, sum(b),sum(c) from Tablename||sysdate where d = erngroup by a;rnrn这条<em>语句</em><em>怎么</em>用游标来实现呀
动态SQL能执行,非动态SQL执行不了??
[code=SQL]create or replace procedure test(years in varchar2,corps in varchar2,ctrlprjcodes in varchar2,jukong in varchar2)rnisrnbeginrninsert into bdgt_formation(tagfrom,pk_downsend_b,m_year,m_dept,pk_corp,dr,projectcode,rn projectname,pk_formation,def7)rn select biaoji,pk_downsend_b,m_year,m_dept,pk_corp,dr,projectcode,projectnamern ,generatepk(pk_corp)pk_formation,def7 from (rn select distinct 10 as biaoji,f.pk_downsend_b,to_char(to_number(f.m_year)+1) m_year,f.m_dept,f.pk_corp,f.dr,f.projectcode,f.projectnamern,f.pk_formation,f.pk_formation def7rn from bdgt_formation_b b,bdgt_formation f,bd_deptdoc bdd rnwhere b.dr='0' and f.dr='0' and b.childprjname is not null and b.pk_formation=f.pk_formationrnand f.m_dept=bdd.pk_deptdoc(+) and b.def4 is not null and nvl(b.closeflag,'N')!='Y' and f.pk_corp=corps and f.m_yearrn=years and f.projectcode=ctrlprjcodes and b.def4=jukong)base;rnend;rn[/code]rn不用动态SQLrn[code=SQL]create or replace procedure test(years in varchar2,corps in varchar2,ctrlprjcodes in varchar2,jukong in varchar2)rnisrnsqls varchar2(2000):='';rnbeginrnsqls:='insert into bdgt_formation(tagfrom,pk_downsend_b,m_year,m_dept,pk_corp,dr,projectcode, projectname,pk_formation,def7) rnselect biaoji,pk_downsend_b,m_year,m_dept,pk_corp,dr,projectcode,projectname rn,generatepk(pk_corp)pk_formation,def7 from (select distinct 10 as biaoji,f.pk_downsend_b,rnto_char(to_number(f.m_year)+1) m_year,f.m_dept,f.pk_corp,f.dr,f.projectcode,f.projectname,rnf.pk_formation,f.pk_formation def7 from bdgt_formation_b b,bdgt_formation f,bd_deptdoc bdd rnwhere b.dr=''0'' and f.dr=''0'' and b.childprjname is not null rnand b.pk_formation=f.pk_formation and f.m_dept=bdd.pk_deptdoc(+) rnand b.def4 is not null and nvl(b.closeflag,''N'')!=''Y'' and f.pk_corp='||corps||' rnand f.m_year='||years||' and f.projectcode='||ctrlprjcodes||' and b.def4='||jukong||')base';rnexecute immediate sqls;rnend;rn[/code]用动态SQL,两个<em>语句</em>要达到的目的都一样,可我在测试时发现不用动态SQL的过程并没有<em>执行</em>插入操作,动态SQL那个则是正确的,我把非动态SQL的存储过程给拷出来自己赋值也能插入,实在郁闷了,求解
oracle用存储过程 进行行转列(执行动态SQL语句)
---------------------------------------------------------------建表 ----------------判断student表是否存在 declare num number; --声明 参数num 类型number begin --开始 select count(1) into num from user_tables
Oracle 动态SQL在存储过程中的使用和执行
Excute immediate 动态SQL<em>语句</em> using 绑定参数列表 v_count number default 0 ; v_sql:=' select count(0) from '|| rs.tableName ||' where IS_PEAT=1 and dep_id=:1 AND shield_sate !=...
SQLSERVER2008在存储过程中执行动态SQL语句的问题
我想要达到的效果就是:在根据条件返回记录数后,能够根据返回的记录数去继续<em>执行</em>下面的SQL<em>语句</em>,进而返回结果,同时在页面上显示的结果为10:rnCREATE proc select_areasAssociation_sortrn@condition varchar(100)rnasrndeclare @regularSortCount int,@sortCount int,@sql varchar(500)rn--返回固态排名的记录数rnset @sql='select '+@regularSortCount+'=COUNT(1) from AreasAssociation rnwhere RegularSort is not null and RegularSort>0 and '+@conditionrnexec @sqlrn--返回动态排名的记录数rnset @sql='select '+@sortCount+'=COUNT(1) from AreasAssociation rn where Sort is not null and Sort>0 and '+@conditionrnexec @sqlrn--当动态排名和固定排名都不存在时rnif(@regularSortCount=0 and @sortCount=0)rnbeginrn --select top 10 * from AreasAssociation where PositionID=2 rn --and CrabType=1 ORDER BY newID() rn returnrnendrn--当固定排名存在而动态排名不存在时rnelse if(@regularSortCount>0 and @sortCount=0)rnbeginrn。。。。。。。rn但是<em>执行</em>到”--返回固态排名的记录数”的时候就报错了,各位大侠给点建议吧。。。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/9.gif][/img]
怎样在函数内部执行动态SQL语句
SET @SSQL='SELECT @STEMP=VALS FROM SYSTEM_CONFIG WHERE ID=82'rnrn这样一个SQL<em>语句</em>,其中 VALS 和 82 是由变量产生的 @STEMP是想取得返回值,这样的SQL<em>语句</em>在函数里面<em>怎么</em><em>执行</em>????rnrn我试了 rnExec (@SSQL)rn报:在函数内不正确地使用了 'EXECUTE'。rnrnrn exec sp_executesql @SSQL,N'@a int output',@num output rn在调用函数的时候报:只有函数和扩展存储过程才能从函数内部<em>执行</em>。rnrnrnrn帮帮忙吧!
函数内如何执行动态SQL语句
问题描述:rn我需要通过表单编号来找到表单信息具体存在哪个表,然后在那个表检索出一信息,我是这样做的,定义一个函数,输入变量为表单编号@FormID,声明变量@TableID,然后通过拼接SQL<em>语句</em>再<em>执行</em>的方式,来找一个叫SPValue的字段,但是想了很多方法,都不能在函数内把这个变量输出,用以下的方法,会报一个‘只有函数和某些扩展存储过程才能从函数内部<em>执行</em>’的异常,请大神指引rn具体<em>语句</em>:rnALTER FUNCTION [dbo].[FUN_YSCL_GetSpvalue]rn(rn -- Add the parameters for the function herern @FormID VARCHAR(200)rn)rnRETURNS VARCHAR(20)rnASrnBEGINrnrnDECLARE @TableID VARCHAR(20)rnrnSELECT @TableID = tb.vcTableIDrnFROM tG10Money tmrn LEFT JOIN tG10Tables tbrn ON tm.iFormType = tb.IDrnWHERE vcFormID = @FormIDrnrnrnDECLARE @strSQL NVARCHAR(2000)rnSET @strSQL = ''rn--SET @strSQL = ' INSERT INTO tSpvalue_temp(formid,spvalue)'rnSET @strSQL += ' SELECT 'rnSET @strSQL += '@spvalue=tb.SPValue'rnSET @strSQL += ' FROM ' + @TableID + ' tb'rnSET @strSQL += ' RIGHT JOIN ( SELECT DISTINCT'rnSET @strSQL += ' FormID ,'rnSET @strSQL += ' MAX(WFNodeIndex) AS maxnode'rnSET @strSQL += ' FROM tFS1001'rnSET @strSQL += ' WHERE RowType = 1'rnSET @strSQL += ' GROUP BY WFID ,'rnSET @strSQL += ' FormID'rnSET @strSQL += ' ) maxnode'rnSET @strSQL += ' ON tb.FormID = maxnode.FormID'rnSET @strSQL += ' AND tb.WFNodeIndex = maxnode.maxnode'rnSET @strSQL += ' WHERE tb.FormID= @FormID 'rnrnDECLARE @spvalue VARCHAR(20)rnrnEXEC sp_executesql @strSQL,rn N'@spvalue VARCHAR(20) out,@TableID VARCHAR(20),@FormID VARCHAR(20)',rn @spvalue OUTPUT, @TableID, @FormIDrnrnRETURN @spvaluernrnrnrnENDrn
存储过程里如何执行动态SQL语句
DECLARE @SQL NVARCHAR(1000)rnDECLARE @SQL_COUNT INTrnSELECT @SQL_COUNT=NULLrnSET @SQL=SET @SQL=N'SELECT @SQL_COUNT=COUNT(*) from Customers where Country=''usa'''rn***********rn***********rnIF(@SQL_COUNT>0)rn**************rnELSErn**********rn======================================================================================rn就是想统计出@SQL的记录数,接着根据记录数做其他的事情,rn这样的sql查询<em>语句</em>是没有必要写成动态的,但我只是想简单表达一下我的情况
SQL Server存储过程中执行动态SQL语句
一、简介      在Sql Server中<em>执行</em><em>动态sql</em><em>语句</em>有两种方法:exec和exec sp_executesql。      优缺点: 1、exec sp_executesql提供输入、输出接口,可以在sql<em>语句</em>中进行参数占位;exec则不可以。 2、exec sp_executesql能够重用<em>执行</em>计划,提高了<em>执行</em>效率;exec则不可以。 3、exec sp_executesql更安
ASA中执行动态sql语句是什么?
我看了帮助,应该是 exectue immediate,但我在扫<em>执行</em>下面这个过程时却出错rnrndrop procedure usp_test;rnrncreate procedure usp_testrnasrnbeginrndeclare @sql varchar(255)rnselect @sql = "insert into c_option values ('v1',1,'test')"rnexecute immediate @sqlrnselect * from c_optionrnend rnrnrn在isql中<em>执行</em> exec usp_test 出错,提示为:rnTable or view not found: Procedure '@sql' not foundrn改为:rncreate procedure usp_testrnasrnbeginrnexecute immediate "insert into c_option values ('v1',1,'test')"rnselect * from c_optionrnend rn提示:Table or view not found: Procedure 'immediate' not foundrn
存储过程中如何执行动态Sql语句
存储过程中如何<em>执行</em>动态Sql<em>语句</em>? 要详细注释。最好有实际的例子。
如何执行超长动态SQL语句(急,在线)
我动态构造了一个SQL<em>语句</em>,但长度超过了8000个字符。我将这个SQL<em>语句</em>保存在两个VARCHAR(8000)的变量中。现在用EXEC<em>执行</em>,如EXEC(@VAR1+@VAR2)但出错,因为EXEC只能<em>执行</em>8000以内的字符,且用PRINT也存在此类问题。rnrn我该如何<em>执行</em>超长动态SQL<em>语句</em>(超过8000的)呢?谢谢!
[求助]这个动态SQL语句为什么执行不成功
[code=sql]rnexec('Create Table #voteStatic ( VQID int,VQName nvarchar(200), Item1 Int , Item2 Int , Item3 Int , Item4 Int , Item5 Int )')rn[/code]rnrn<em>执行</em>完了,没什么结果啊,#voteStatic这个表还是找不到,无语了。rnrn试了好几个方法了,直接把<em>语句</em>拿出来是可以<em>执行</em>的,但放到字符串变量中就<em>执行</em>不了了,是为什么呢?
在存储过程中如何执行动态SQL语句
这是一个拼接SQL<em>语句</em>的存储过程rn[code=SQL]rnuse kj249rngorn/*--检查存储过程是否存在--*/rnif exists(select * from sysobjects where name='proc_guiji')rn drop procedure proc_guijirngorn/*--创建储过程--*/rncreate procedure proc_guijirn@stime datetime='',rn@etime datetime='',rn@bh varchar (100)=''rnasrndeclare @sql varchar(8000)rnset @sql='rn select bh as bh,(select name from personinf where bh=P'+convert(varchar(8),@stime,112)+'.bh) as name,ygh as ygh,point as point,(select fzwzh from fzinfo where fzname=point) as fzwzh,rtime as rtime from p'+convert(varchar(8),@stime,112)+' where bh='+@bhrnwhile convert(varchar(8),@stime,112)
mybatis 动态sql 根据条件执行相应的语句
SELECT                                   DISTINCT (manage_id)                                        SUM(pay_money) as PayMoney                                   FROM table
这段动态SQL语句为什么不能执行
DECLARE @Sql varchar(1000)rnDECLARE @TotalCount intrnSELECT @Sql = 'SELECT @TotalCount = Count(*) From Test'rnEXECUTE( @Sql )rnrn在SQL Server中<em>执行</em>这几句<em>语句</em>,为什么不能<em>执行</em>?提示“必须声明变量 '@TotalCount'。”rn要实现这样的功能该<em>怎么</em>写?
急!!!在Function中如何执行动态SQL语句
CREATE FUNCTION FAVGLJ(@ADKind VARCHAR, @TabName VARCHAR, @Field VARCHAR, @Condition VARCHAR, @Flag INTEGER)rnRETURNS FLOATrnASrnBEGINrn declare @fValue floatrn declare @strSQL VARCHARrn declare @iNIAN VARCHARrn declare @iYUE VARCHARrn declare @iRI VARCHARrn declare @iJZ VARCHAR(10)rn SET @iNIAN=(select NIAN from pub_var where DKind=@ADKind)rn SET @iYUE=(select YUE from pub_var where DKind=@ADKind)rn SET @iRI=(select RI from pub_var where DKind=@ADKind)rn SET @iJZ=(select JZ from pub_var where DKind=@ADKind)rn --单机组月累计,条件为NIAN,YUE,RI,JZ 本年本月累计到目前日期为止rn if @Flag=1 beginrn SET @strSQL='select @tfValue=avg('+@Field+') from '+@TabName+' where JZ='+@iJZ+' and NIAN='+cast(@iNIAN AS VARCHAR)+'rn and YUE='+cast(@iYUE AS VARCHAR)+' and RI>=1 and RI=1 and RI, rn @tfValue=@fValue OUTPUT rn endrn return(@fValue)rnENDrnrn上面是我写的函数,在<em>执行</em>的时候报错,“服务器: 消息 557,级别 16,状态 2,过程 FAVGLJ,行 22rn只有函数和扩展存储过程才能从函数内部<em>执行</em>。”rn我用了几种方法都不行,急啊
oracle 存储过程执行动态sql返回游标
execute immedit <em>执行</em>静态sql,sql是查询<em>语句</em>,每次返回的列不相同可以直接用 open cursor for sql 方式返回集合
动态sql语句执行if...else..报错
exec 'IF 5>3 UPDATE user_base SET lastdate=getdate() WHERE u_id=1 ELSE update user_base set lastdate=getdate() where u_id=1'rn-rn查询分析器中报错:rn服务器: 消息 170,级别 15,状态 1,行 3rn第 3 行: 'IF 5>3 UPDATE user_base SET lastdate=getdate() WHERE u_id=1 ELSE update user_base set lastdate=getdate() where u_id=1' 附近有语法错误。rn-rn如果不用exec,<em>语句</em>可以正常<em>执行</em>,但是改<em>语句</em>是要动态生成的<em>语句</em>,必须要用exec来<em>执行</em>;
这条动态sql语句为何无法成功执行
ls_sql="select md5info.mingwen into '"+b+"' from md5info where md5info.md5jm='“+sle_1.text+”'"rnEXECUTE IMMEDIATE:ls_sql Using sqlca;rnrnb是变量,md5info.md5jm中有一条符合条件的,但b无法获得返回值。
sql 执行动态sql语句建表问题
declare @tablename nvarchar(10)rndeclare @sql nvarchar(200)rnset @tablename='t1234'rnset @sql= 'create table @tablename(id int identity(1,1),name nvarchar(5) default ''5'')'rnset @sql='create table ' +@tablename+'(id int identity(1,1),name nvarchar(5) default ''5'')'rn--print @sqlrn--exec @sql 这句可以建表rnexec sp_executesql @sql,N'@tablename nvarchar(10)',@tablename --这句不行,为什么这样子?怎样才行?
存储过程中如何执行动态sql语句
如何把表明作为参数,<em>执行</em> drop table @table_name
请教一动态SQL语句执行方法
各位大大帮帮忙,又遇到难题了:rn我有一cb_1.clicked的事件中有如下程序:rn-----------------------------------rnlong ll_aarnll_aa=fn_tj("前台","1","微机")rn---------------------------------rnfn_tj(string an_khdw,string an_gzlx,string an_sblx) returns long 函数程序如下:rn--------------------------------------rnstring ls_sqlrnlong ll_fhrnrnls_sql = "select sum(sbwxfwd.sjsl) into :ll_fh from sbwxfwd,khxx,kh_gzlx,sbxx where (sbwxfwd.khxxbh = khxx.khbh) and (sbwxfwd.gzlx = kh_gzlx.gzlxbh) and " &rn+"(sbwxfwd.sbxxbh = sbxx.sbbh) and (khxx.khdw = :an_khdw) and rn(kh_gzlx.gzlx = :an_gzlx) and (Substr(sbxx.sblx,1,charindex('#',sbxx.sblx) - 1 ) = :an_sblx) and (sbwxfwd.rq = '2004')"rnrnexecute immediately :ls_sqlrnrnreturn(ll_fh)rn-------------------------------------------------rn<em>执行</em>上面的程序后,返回值老是0,但我直接用SQL<em>语句</em><em>执行</em>却可以将值统计出来,我想可能是我SQL动态方式运用错误,还请各位大大指点迷经,函数中的<em>语句</em>应怎样改写,在此谢谢先!rnrn
动态SQL语句基本语法。动态SQL语句基本语法
<em>动态sql</em><em>语句</em>基本语法 1 :普通SQL<em>语句</em>可以用Exec<em>执行</em> 例: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL 错误: declare @fname varchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 正确: Exec('select ' + @fname + ' from tableName') -- 请注意加号前后的单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fname varchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 --注:@s参数必须为ntext或nchar或nvarchar类型,必须将declare @s varchar(1000) 改为declare @s Nvarchar(1000) 如下: declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @fname = 'FiledName' --设置字段名 set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输入或输出参数 (1)输入参数: declare @QueryString nvarchar(1000) --动态查询<em>语句</em>变量(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型) declare @paramstring nvarchar(200) --设置动态<em>语句</em>中的参数的字符串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型) declare @input_id int--定义需传入动态<em>语句</em>的参数的值 set @QueryString='select * from tablename where id=@id' --id为字段名,@id为要传入的参数 set @paramstring='@id int' --设置动态<em>语句</em>中参数的定义的字符串 set @input_id =1 --设置需传入动态<em>语句</em>的参数的值为1 exec sp_executesql @querystring,@paramstring,@id=@input_id   若有多个参数: declare @QueryString nvarchar(1000) --动态查询<em>语句</em>变量(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型) declare @paramstring nvarchar(200) --设置动态<em>语句</em>中的参数的字符串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型) declare @input_id int--定义需传入动态<em>语句</em>的参数的值,参数1 declare @input_name varchar(20)--定义需传入动态<em>语句</em>的参数的值,参数2 set @QueryString='select * from tablename where id=@id and name=@name' --id与name为字段名,@id与@name为要传入的参数 set @paramstring='@id int,@name varchar(20)' --设置动态<em>语句</em>中参数的定义的字符串,多个参数用","隔开 set @input_id =1 --设置需传入动态<em>语句</em>的参数的值为1 set @input_name='张三' --设置需传入动态<em>语句</em>的参数的值为"张三" exec sp_executesql @querystring,@paramstring,@id=@input_id,@name=@input_name --请注意参数的顺序 (2)输出参数
使用第四种动态sql如何执行oracle的存储过程?
由于在应用开发过程中无法预知存储过程名和参数列表,所以只能使用第四种<em>动态sql</em>语法,但在使用SQLSERVER时是可以的,在<em>oracle</em>中数据库系统提示“ORA-24333 零迭代错误!”
使用EXECUTE IMMEDIATE语句执行动态SQL的问题:
想使用:rnBEGINrn EXECUTE IMMEDIATE ' CREATE TABLE TEST'rn ||'(AA NUMBER(10),BB NUMBER(10))';rnEND;rn/rn结果报错:rnERROR at line 2:rnORA-06550: line 2, column 10:rnPLS-00103: Encountered the symbol "IMMEDIATE" when expecting one of the following:rn:= . ( @ % ;rnThe symbol ":= was inserted before "IMMEDIATE" to continue.rn我用的是805版本,是不是不支持这样的本机动态SQL操作?谢谢!rn
如何写这个执行动态sql语句的存储过程?
要求两个输入参数rn字符串1(keyword),字符串2(wherecon)rn一个输出参数rn(数值型)totalernsql<em>语句</em>大概写法:rnselect count(1) from tb where 字段 like '%keyword%' and 后加whereconrn把count结果作为total输出。rnrn请各位高手指点如何根据我意思写成存储过程。rnrnrn另想再问一下,这样的存储过程在程序端调用效率是否比直接在程序里运行这个sql<em>语句</em>高。也就是这种动态的存储过程高,还是直接sql<em>语句</em>效率高。
如何获取一个动态SQL语句执行结果?
DECLARE @SQLCheckSourceData varchar(512)rnDECLARE @TableNamevarchar(512)rnSET @TableName='Categories'rnrnSELECT @SQLCheckSourceData = 'SELECT COUNT(*) FROM '+@TableNamernEXEC( @SQLCheckSourceData)rnrn如何取得这个结果呢?rn有一种方法:rnDECLARE @num int rnrnSELECT @SQLCheckSourceData rn= 'SELECT '+ @num +'= COUNT(*) FROM '+@TableNamern但调试不通:rnrn服务器: 消息 245,级别 16,状态 1,行 10rn将 varchar 值 'SELECT ' 转换为数据类型为 int 的列时发生语法错误。
请教execute immediate执行动态SQL语句的问题。
在存储过程中构造出了一句建约束的SQL<em>语句</em>,然后用execute immediate rn发现报错,把那个SQL<em>语句</em>打印出来单独是SQLPLUS中<em>执行</em>又没有<em>执行</em>rnrn这句话是ALTER TABLE AAA ADD CONSTRAINTS pk_AAA PRIMARY KEY(id,fie1)rnrn报错如下:rnSQL> beginrn 2 papp_create_pk('000010_0000000020028','AAA');rn 3 end;rn 4 /rnv_pkfields:id,fie1,rnbegin...rnALTER TABLE AAA ADD CONSTRAINTS pk_AAA PRIMARY KEY(id,fie1)rnbeginrn*rnERROR 位于第1行:rnORA-00900: 无效SQL<em>语句</em>rnORA-06512: 在SSSUSER.PAPP_CREATE_PK", line 53rnORA-06512: 在line 2rnrn请问怎样才能自动生成的这句话在存储过程中<em>执行</em>?rnrn谢谢rn
如何用动态SQL执行这个语句
如何用动态SQL<em>执行</em>下面的<em>语句</em>?rninsert into OpenRowSet('microsoft.jet.oledb.4.0',';database='+@topath,'select * from 油品盘点实测表') select * from true_inventoryrn其中@topath是个变量,保存着要导出的ACCESS文件路径。
如何在oracle存储过程中执行动态sql语句???
tsql varchar2(50);rnfitemid integer;rnbeginrn tsql:='select * from t_item' ||rn ' where fitemid=' || fitemid;rnend;rn请问如何<em>执行</em>tsql<em>语句</em>???
oracle 动态SQL
总结Oracle 脚本编程中,动态SQL的几种用法
Oracle 动态sql
NULL 博文链接:https://kata520-java.iteye.com/blog/764253
oracle 动态sql
本人要用<em>动态sql</em>完成<em>oracle</em>数据库的封装。rn比如封装一个select函数,rnint select(*mysql,int filednum,...) //参数为变参,fieldnum 为mysql<em>语句</em>中实际需要传出的参数个数rnrn这样就会有几个问题:rn第一:是否是采用select xxx into xxx 的形式来完成?这样的问题就是变量是不固定的,如何写<em>动态sql</em>rn第二:select <em>语句</em>中的字段类型也是不固定的,是否有影响?rnrn忘各位大神给点意见,谢谢。
动态sql语句
现在有一个函数,如下:rnCREATE FUNCTION dbo.search_se(@id nvarchar(10))rnRETURNS nvarchar(300)rnASrnBEGINrnrnDECLARE @re nvarchar(3000) rn SET @re='' rn SELECT @re=@re+ '/'+ CAST(Bs as varchar)rn FROM tableNamern WHERE Id=@Id rn return STUFF(@re,1,1,'')rnENDrn现在tableName需要改变且该函数在多个存储过程中都调用。经过查资料发现函数内不能使用动态SQL。现在该<em>怎么</em>办?
动态SQL语句
有些时候,sql<em>语句</em>where条件中,需要一些安全判断,例如按性别检索,如果传入的参数是空的,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。这是我们可以使用<em>动态sql</em>,增加一个判断,当参数不符合要求的时候,我们可以不去判断此查询条件。         下文均采用mysql语法和函数(例如字符串链接函数CONCAT)。         源代码http://limin
动态SQL语句
a 100 0rna 0 -80rn请问用动态<em>语句</em>怎样实现 rna 100 -80
动态SQL 语句.
1rn[code=SQL]declare @num int, rn @sqls nvarchar(4000) rnset @sqls='select count(*) from tablename' rnexec(@sqls) [/code]rnrn2rn[code=SQL]declare @num int, rn @sqls nvarchar(4000) rnset @sqls='select @a=count(*) from tablename' rnexec sp_executesql @sqls,N'@a int output',@num output rnselect @num [/code]rnrn[size=16px]输出一样的?rnrn2 中的那个 输出变量要这么复杂的?@a在那里动态<em>语句</em>赋值了,为啥还用@num这个中间变量再输出output?rn还有@a<em>怎么</em>不declare声明的?好像<em>动态sql</em>规则好不规范[/size]rn
动态sql语句
动态sql语句.......
select rn b.c_name as s_name, rn sum(case c.d_name when 'A' then 1 else 0 end) as [A], rn sum(case c.d_name when 'B' then 1 else 0 end) as [B], rn count(1) as [ji] rnfrom [tbl_4] d rninner join [tbl_3] c on c.d_id=d.d_id rninner join [tbl_1] a on a.r_id=d.r_id rnleft join [tbl_2] b on a.c_id=b.c_id rngroup by b.c_name rnrn<em>动态sql</em><em>语句</em>。。。。。。。。。<em>怎么</em>写啊?
oracle动态sql
语法:EXECUTE IMMEDIATE SQL_STRING [INTO   DEFINE_VARIABLE,DEFINE_VARIABLE.../record]       [USING IN /OUT BIND_ARGUMENT,IN /OUT BIND_ARGUMENT..] SQL_STRING:sql<em>语句</em>或PL/SQL代码块 DEFINE_VARIABLE:表示用来接收查询结果的变量...
oracle动态sql
请问:rndeclarernsql_stmt varchar2(200);rnemp_id nlumber(4):=7566;rnemp_rec emp%rowtype;rnbeginrnexecute immediate 'create table bonusl(id number,amt number)';rnsql_stmt :='select * from emp where empno=:id';rnexecute immediate sql_stmt into emp_rec using emp_id;rnend;rn/rnrn在这个PL/SQL中:rnsql_stmt :='select * from emp where empno=:id';其中的 :id 是什么意思啊?
oracle动态SQL
ORACLE动态SQL的使用心得,详细介绍几种使用的方法
这个动态SQL语句怎么执行呢?有参数的
这个动态SQL<em>语句</em>要<em>怎么</em><em>执行</em>呢?有参数的rnrnuse Logsrnrndeclare @MaxUsers intrndeclare @Querydate datetimernrnset @MaxUsers = 11 rnset @Querydate = getdate() ----外部变量,临时赋值rnrnrnExec ('select top ' + @MaxUsers + ' UserName From [Logs]rn rnwhere datediff(day, '+ @Querydate +' ,addTime)=0 rnrn')rnrnrnrnwhere datediff(day, '+ @Querydate +' ,addTime)=0 rnrn如果改为where datediff(day, getdate() ,addTime)=0 就对了,但问题是,我这个@QueryDate是传入的日期呀!
怎么使用sp_executesql执行动态sql语句后的结果集?
我使用exec sp_executesql N'select * from Customers',我应该怎样使用这个查询结果集?谢谢。
oracle 执行语句
修改字段可为空 ALTER TABLE sys_config_settings_c MODIFY "Value" NULL; 修改字段类型 ALTER TABLE sys_dp_import_c MODIFY FILENM varchar(500); -- -- 修改字段长度 -- ============================== -- alter table IA
oracle 执行语句的问题..
sql_string := 'OPEN p_CURSOR IS SELECT DISTINCT * FROM MS_CLASSINFO WHERE' || v_where; --构件的sql<em>语句</em>rn --dbms_output.PUT_LINE(sql_string); --bebugrn execute immediate sql_string;rnrnp_CUROR 是一个存储过程中的OUT游标rnv_where 是我动态构造的条件<em>语句</em>,测试了没有问题rn但是我在存储过程中用execute immediate来<em>执行</em>的时候就报错,请大家帮帮忙哦..
oracle语句执行错误
ORA-00911: invalid character   QUERY_WORD_SQL = &quot;select ID, NAME from T_P_WORD;&quot; 定义的SQL<em>语句</em>如上 解决: 去掉<em>语句</em>最后的分号即可  QUERY_WORD_SQL = &quot;select ID,NAME from T_P_WORD&quot;...
Oracle 中 怎么执行两句select 语句
在Sql Server 2000 可以<em>执行</em>两句select<em>语句</em>select * from aa select * from bb ,两句select<em>语句</em>之间只有一个空格就行了。Oracle这样不行,有什么办法,让它多查询。
oracle怎么查看刚执行语句???
rt
如何知道刚执行的动态SQL语句已经执行成功
set @sql = 'update ' + @tblName + ' set stepCode='+Convert(varchar,@jd_xyjd)+',zhcl_sj=getdate() ,clgclj='+@clgclj+' where id='+Convert(varchar,@sjid)rn exec sp_executesql @sql rn在这个<em>执行</em>成功之后,我还要做一个动态SQL<em>语句</em>的<em>执行</em>,如果不成功就不<em>执行</em>下面的操作,所以,这里如何能判断,已经成功<em>执行</em>更新操作啊
动态SQL执行问题(急)
set @sqlstr='insert into tab(cNum,cDate) values(' +@cNum +','+@cDate+')'rnexec(@sql)出错rn其中@cNum int,@cDate datetime
mysql存储过程执行动态sql的问题
我现在想通过mysql的存储过程<em>执行</em>动态SQL,传递一个表名查询,根据表名查询表中的第一个列。rnrn根据第一列获取其列中的最大值,下面是我写的存储过程。但始终获取不到最大值的结果,请帮忙看一下 是什么原因?rnrnrnDELIMITER $$rnCREATE PROCEDURE genBillsNoProc(IN tableName VARCHAR(30),OUT data_t VARCHAR(100))rnBEGINrnDECLARE sql_1 VARCHAR(1000);rnDECLARE sql_2 VARCHAR(1000);rnSET sql_1 = CONCAT("SELECT COLUMN_NAME into @colName FROM information_schema.COLUMNS WHERE table_name='",tableName,"' limit 0,1");rnSET sql_2 = CONCAT("SELECT MAX(?) FROM ",tableName);rnrnrnSET @frist_sql=sql_1;rnPREPARE stmt FROM @frist_sql;rnEXECUTE stmt;rnrnSET data_t := @colName;rnSET @second_sql=sql_2;rnPREPARE stmt1 FROM @second_sql;rnEXECUTE stmt1 USING @colName; rnSELECT sql_2 ;rnEND$$ rnrn##<em>执行</em>存储过程rnCALL genBillsNoProc('t_common_system',@data_t);rnrn运行存储过程返回结果就是一个列名:rncol_xxx
动态SQL执行【在线等】
[code=SQL]SET QUOTED_IDENTIFIER ON rnGOrnSET ANSI_NULLS ON rnGOrnrnrnrnALTER PROCEDURE [dbo].[SP_DEPOT_SELECT]rn@P_MobileId nvarchar(50)rnASrndeclare @sqlstr nvarchar(4000)rnDECLARE @PhoneCount intrnDECLARE @return_DateTime intrndeclare @DepotCount intrnBEGINrn --将这条操作数据标示为当前用户rn begin tranrn set @sqlstr = ''rn set @sqlstr = 'UPDATE [Depot] with(rowlock) SET [LockFlag] = @P_MobileId, LockDate = getdate() WHERE ID=(SELECT top(1)Id FROM depot where [LockFlag] is null or [LockFlag] = '''''rn rn exec sp_executesql @sqlstr,N'@P_MobileId nvarchar(50)',@P_MobileIdrn commitrnENDrnrnrnrnGOrnSET QUOTED_IDENTIFIER OFF rnGOrnSET ANSI_NULLS ON rnGOrnrn[/code]rn上面哪个@sqlstr变量的值被截取成UPDATE [Depot] with(rowlock) SET [LockFlag] = @P_MobileId, LockDate = getdate() WHERE ID=(SELECT top(1)Id FROM depot where [Loc是为什么
Oracle存储过程执行动态sql
Oracle存储过程<em>执行</em>动态SQl
oracle-function-执行动态sql
execute immediate str_sql into tabtcn; --动态<em>执行</em>DDL<em>语句</em>
MyBatis执行动态sql及存储过程
MyBatis调用动态SQL和存储过程
动态sql执行报错
<em>动态sql</em><em>执行</em>报错 现需要<em>执行</em><em>动态sql</em>,有两种<em>执行</em>方式: (1) execute immediate “select count(1) from :bm where :lm is not null” into v_num using v_bm, v_lm (2) execute immediate “select count(1) from " || v_bm || " where " || v...
动态sql执行oracle存储过程
1、调用procedure:           v_sql  := 'Begin pkg_name.procedure_name(:in_v1, :in_v2, :out_v1, :out_v2); End;' ;           EXECUTE IMMEDIATE v_sql using in in_value1,in in_value2,out out_value1,out out_
kettel循环执行动态sql
kettel循环<em>执行</em><em>动态sql</em>,
动态SQL执行的几种方法
①最简单常用的方法 v_sql := '     INSERT INTO TB1     (         COL1,         COL2,         COL3,         COL4     )     SELECT COL1          , COL2          , COL3          , ' || '''' || V_NAME |
执行动态SQL输出参数
DELIMITER $$rnrnCREATE DEFINER=`dba`@`%` PROCEDURE `mydb`.`sp_total`(IN p_table VARCHAR(100), OUT p_total INT)rnBEGINrn SET @sql = CONCAT('SELECT COUNT(1) INTO ', p_total, ' FROM ', p_table);rn PREPARE total FROM @sql;rn EXECUTE total;rn DEALLOCATE PREPARE total;rnEND$$rnrnDELIMITER ;rnrn调用时出错:rncall sp_total('abc', @t); rnselect @t;
执行动态SQL时出错!
declare @fmdate datetime,@todate datetime,@mysql varchar(1000)rnselect @fmdate = '2005-11-01'rnselect @todate = '2005-11-14'rnrnwhile @fmdate < @todaternrnbeginrnrnrnset @mysql = 'sum(case x_wk_pdate when '+@fmdate+' then x_wk_time else 0 end) as '+@fmdate+' ,' + isnull(@mysql,'')rnrnset @fmdate = DATEADD(day, 1, @fmdate)rnrnendrnrnset @mysql = 'select x_gro_id,x_wk_id,' + @mysql + ' from xy_wk_wage group by x_gro_id,x_wk_id 'rnrnexec @mysqlrngornrnrn服务器: 消息 241,级别 16,状态 1,行 10rn从字符串转换为 datetime 时发生语法错误。
************这个动态SQL如何执行?***********
ORACLE存储过程中如何动态<em>执行</em>如下SQL<em>语句</em>:rnrnselect COUNT(id) into v_id from student;rnrnSQL<em>语句</em>是动态生成的,V_ID是定义的变量,我想动态<em>执行</em>后,调用V_ID,请问如何<em>执行</em>?rn如下是举了个很简单的例子。目的是为了把问题说清楚。rnrn-------------------------------源代码---------------------------------rncreate or replace function FUN_TJ return boolean isrn Result boolean;rnrnV_SQL VARCHAR2(1000);rnV_COUNT NUMBER;rn rnbeginrn V_SQL:='select COUNT(id) into '|| v_COUNT ||' from student';rn execute immediate V_SQL; rnrn IF V_COUNT>=6 THENrn Result:=TRUE;rn END IF;rn return(Result);rnend FUN_TJ;rn-------------------------------源代码---------------------------------rnrnrn大家看看 execute immediate V_SQL; 是否正确,出错提示定位于这一句。rn错误代码ORA-00909rn错误代码ORA-06512rn
关于执行动态SQL问题??
create or replace procedure pro_name(strSql in varchar2) isrnrnv_sql varchar(2000);rnlsn_a number(10)rnrnbeginrnrn v_sql:='select sum(a) as a from tablename where '||strSql;rn Execute Immediate v_sqlstr Into lsn_a;rnrnend pro_name;rnrn编译通过,但测试出现错误:未预期的 SQL 命令结尾(指向这行 Execute Immediate v_sqlstr Into lsn_a)rn请各位解答。谢谢
oralce中for 执行动态sql
[b]--oralce中 for <em>执行</em><em>动态sql</em>[/b] CREATE OR REPLACE FUNCTION fun_checkguaranteetype(TranId varchar2) return varchar2 is V_result varchar2(1000); Begin declare zhiyavar NUMBER; diyavar NU...
Unity3D4.1.2破解补丁<已测通过>下载
Unity3D4.1.2破解补丁<已测通过> 相关下载链接:[url=//download.csdn.net/download/xiaosaret/5217053?utm_source=bbsseo]//download.csdn.net/download/xiaosaret/5217053?utm_source=bbsseo[/url]
简单的摄像头程序下载
//------------------------------------------------------------------- // CCaptureVideo视频捕捉类实现文件CaptureVideo.cpp //------------------------------------------------------------------- // CaptureVideo.cpp: implementation of the CCaptureVideo class. 相关下载链接:[url=//download.csdn.net/download/taitalent/4704027?utm_source=bbsseo]//download.csdn.net/download/taitalent/4704027?utm_source=bbsseo[/url]
php 3des加密类下载
关于安全方面的php代码类,采用的是3des加密技术,很好用, 相关下载链接:[url=//download.csdn.net/download/fke_tony/4868844?utm_source=bbsseo]//download.csdn.net/download/fke_tony/4868844?utm_source=bbsseo[/url]
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件
我们是很有底线的