fyqt.net
当前位置:首页 >> sql存储过程动态拼接 >>

sql存储过程动态拼接

SQL code --在存储过程里面完成呗 --例: create or replace procedure yyp_cwdh(table_name varchar) is str_sql varchar2(400):=''; begin str_sql:='select * from '||table_name||' where 1=1'; execute immediate st……

这样可以吗? create proc pr_testas begin declare @a varchar(max) set @a ='select * from where 1=1 ' if @tiaoJian !='' begin set @a =@a +' and [列名] like ''%+@tiaoJian+%''' end print (@a) exec (@a)endgo这样可以吗?

你先调试一下,少了个@和begin、end 另外,拼接变量不能在字符串内啊,这样没用 create procedure [dbo].[baobiao1] @date1 datetime, @date2 datetime as set nocount on begin Set XACT_ABORT ON; Begin Tran Declare @SQL1 varchar(8000) Dec...

基本可以认为是无差别 就一个拼sql语句的话,字存储过程中无非就是字符串拼接,根本不占什么系统资源 这个你放心大胆的使用吧 而sql语句的效率主要是你自己sql写的好不好或者用没用上索引之类的,跟这个拼sql语句关系不大

参考如下: 游标处理 BEGIN DECLARE @Sql varchar(200); DECLARE @name varchar(10); SET @Sql='DECLARE cur CURSOR for select [name] from test_dysql'; EXEC(@Sql). OPEN cur; FETCH next FROM cur INTO @name; WHILE @@FETCH_STATUS=0 BEGIN...

建议你用 instr函数,v_sql条件改为 where instr(p_jbm,t.jbm)>0试试吧。

create proc up_user @userid char(20), @username char(20)as BEGIN select * from tb_user WHERE userid = CASE WHEN @userid '' THEN @userid ELSE userid ENDAND username = LIKE '%' + CASE WHEN @username '' THEN @username ELSE usernam...

declare @s varchar(32) ,@dd varchar(32) set @s ='select * from ' set @dd =' table_cs' exec (@s + @dd)

DECLARE dt_id varchar(32);SET @sqls=CONCAT('SELECT idFROMw_volume_detailWHEREv_id = "',dd_id,'"AND uid IS NULL LIMIT 0,1');execute immediate @sqls into dt_id;

能在详细点吗,没看明白,拼接过程中可以用mysql以外的函数,拼接成后 只能用mysql函数了

网站首页 | 网站地图
All rights reserved Powered by www.fyqt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com