精华内容
下载资源
问答
  • 处理拼接sql时的赋值
    处理拼接sql并且是在select查询拼接时的赋值:
    
    CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50))
    BEGIN
    	## 定义变量
    	DECLARE _num FLOAT(14,6) DEFAULT 0;
    	## @表示全局变量 相当于php $
    	## 拼接赋值 INTO 必须要用全局变量不然语句会报错
    	SET @strsql = CONCAT('SELECT SUM(',_xnb,') INTO @tnum FROM btc_user_coin');
    	## 预处理需要执行的动态SQL,其中stmt是一个变量
    	PREPARE stmt FROM @strsql;  
    	## 执行SQL语句
    	EXECUTE stmt;  
    	## 释放掉预处理段
    	deallocate prepare stmt;
    	## 赋值给定义的变量
    	SET _num = @tnum;
    	
    	SELECT _num
    
    END;;



    如果是where 查询 的话,直接就写 不用拼接sql

    SELECT SUM(fee) INTO _trade_fee_buy FROM btc_myzr WHERE `coinname`=_xnb AND addtime BETWEEN _beg AND _bend;


    展开全文
  • 今天写存储过程,遇到一个问题,具体如下:需求是要统计一张报表,这张表的列不固定,因此在存储过程里做插入语句的时候,就用到了sql语句拼接执行。这里拼接的insert语句是set @sql= 'insert into ##tn(prj) ...

    今天写存储过程,遇到一个问题,具体如下:

    需求是要统计一张报表,这张表的列不固定,因此在存储过程里做插入语句的时候,就用到了sql语句拼接再执行。

    这里拼接的insert语句是

    set @sql= 'insert into ##tn(prj) values('+@pzid+')'
    		

    如果按照上述语句执行就会报错“列名无效”;

    改为

    set @sql= 'insert into ##tn(prj) values('+char(39)+@pzid+char(39)+')'

    加上char(39)这样就可以了。

    至于为什么加char(39),后来我上网查了相关资料,知道这是ASCII码值,表示单引号。

    到此问题解决,以上是我遇到的问题,做个笔记,仅供参考。

    展开全文
  • 最近遇到需要在存储过程里面动态拼接sql。 其实挺简单,先定义sql_str变量,然后给其赋一个sql字符串的值: sql_str := 'select count(*) from amc_fwsp_sap_voucher_v t   where t.usnam = '''||userno||

    之前写存储过程,用到的sql都是相对固定的,最多就是往sql里传几个值。最近遇到需要在存储过程里面动态拼接sql。

    其实挺简单,先定义sql_str变量,然后给其赋一个sql字符串的值:

    sql_str := 'select count(*)  from amc_fwsp_sap_voucher_v t 
                  where t.usnam = '''||userno||'''
                  and t.bldat_month = '''||v_period_code||'''';

    如果有where需要传值,如果是varchar2类型的,要用   '''||要传的值||'''

    这种形式的来传值。

    在字符串里面,不能用into给变量赋值,如果需要的话,用execute immediate sql_str into 变量即可;


    展开全文
  • execute 执行拼接sql execute (sql) 表示执行字符串sql execute sql 表示执行存储过程,名字为sql存储过程 这里主要说执行字符串sql declare @value nvarchar(100);  declare @sq

    execute 执行拼接的sql

    execute (sql) 表示执行字符串sql

    execute  sql 表示执行存储过程,名字为sql 的存储过程

    这里主要说执行字符串sql

    declare @value nvarchar(100);
     declare @sql nvarchar(199);
     set @sql = N'select TOP 1 name from admin where name= '+@value+''
    execute (@sql)

    这里不能执行待输出值的参数,可能是我不会写,如果有朋友能写告诉我下谢谢

    下面 这个可以执行带输出值的参数

    sp_executesql 执行拼接的sql

    declare @value nvarchar(100);
     declare @sql nvarchar(199);
     DECLARE @ParmDefinition nvarchar(500);
     set @sql = N'select TOP 1 @value= name from admin'
    SET @ParmDefinition = N' @value varchar(30) OUTPUT';  -- 定义参数
    exec sp_executesql @sql,@ParmDefinition, @value OUTPUT   --@value OUTPUT  提供输出参数
    SELECT @value


    语法 

    sp_executesql [ @stmt = ] stmt
    [ 
        {, [@params=] N'@parameter_name data_type [ OUT | OUTPUT ][,...n]' } 
         {, [ @param1 = ] 'value1' [ ,...n ] }
    ]

    stmt 也就执行的sql

    包含 Transact-SQL 语句或批处理的 Unicode 字符串。stmt 必须是 Unicode 常量或 Unicode 变量。不允许使用更复杂的 Unicode 表达式(例如使用 + 运算符连接两个字符串)。不允许使用字符常量。如果指定了 Unicode 常量,则必须使用N 作为前缀。例如,Unicode 常量 N'sp_who' 是有效的,但是字符常量 'sp_who' 则无效。字符串的大小仅受可用数据库服务器内存限制。在 64 位服务器中,字符串大小限制为 2 GB,即 nvarchar(max) 的最大大小。

    @params 也就是上边列子的 @ParmDefinition

     SQL 语句或批处理不包含参数 @params  可以为空 ,若sql 中包含参数必须定义才参数 如列子中的 @value  必须定义 @value varchar(30) OUTPUT 

    @params1 输入参数  如列子中的  @value OUTPUT  应为这里没用到输入值,所以没有值,只有输出值 ,若要输入值 则可以写为@value=@value OUTPUT 如不需要输出 去掉所有 OUTPUT

    展开全文
  • MySQL 存储过程执行动态拼接SQL

    千次阅读 2019-08-17 23:51:12
    1.该注意的点都在存储过程代码中已经说明 DROP PROCEDURE IF EXISTS init_test_transfer_data; CREATE PROCEDURE init_test_transfer_data() BEGIN DECLARE v_i INT DEFAULT 1; DECLARE v_limit INT DEFAULT ...
  • 今天客户提了一个需求,需要处理下用户我的产品重复数据,是根据产品名称和产品编码...这里用到了游标和sql拼接及动态执行sql等部分 create or replace procedure test is  -- 条件sql  vc_sql varchar2(4000); 
  •  一开始是想通过拼接SELECT SQL,将所有子节点的报表情况union,然后所谓存储过程的结果返回。调试过程中发现,拼接出来的SQL太长,在拼接过程中自动被截断了。 解决思路:  分别执行原本打算拼接的SELECT 语句,...
  •  declare @cStr nvarchar(1500) --执行语句  declare @iwhere nvarchar(1500) --过滤条件  set @iwhere = ' and 1=1 '  if @beginDate = ''  BEGIN  set @beginDate = '190001'  end   if @endDate ...
  • 数据库:SQLSERVER2008R2 declare @startRowIndex int; declare @endRowIndex int; declare @Sql varchar(1000); set @startRowIndex=1; set @endRowIndex=10; set @Sql='select ROW_NUMBER() over...
  • 问题:根据业务需求修改一条数据时需要将原有数据存储并拼接还原sql 语句,修改多表时,会有多个sql,首先想到 通过符号分隔,然后循环执行sql,但是无法保证分隔后的sql是否能正常执行,因为拼接sql中包含部分...
  • 由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面。 这里就出现了一个问题,我花费了好久才弄通!  其实就是很简单的一个SQL语句:  update table1 set field1=value1,field2 ...
  • -- 一个简单的存储过程,通过拼接sql批量向数据库插入数据 -- 自定义声明结束符 DELIMITER $$ -- row_num要插入数据的行数,cuser当插入数据用户的id create procedure randUser(in row_num int, in cuser varchar...
  • 很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程拼接SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了。具体看如下演示代码: 代码: [sql]view plaincopy...
  • mySql拼接动态SQL并执行

    万次阅读 2018-06-28 16:48:09
    1、之前写了接收动态存储过程返回值的文章,今天写一下拼接并执行动态sql语句的方法 2、具体SQL语句如下  set pSql = concat('update kqcard set ',vFingerIndex,' = \'', vFingerData, '\' , zkkqEnable = 1 ...
  • 存储过程执行拼接sql

    千次阅读 2016-12-23 15:06:08
    delimiter // drop procedure if exists looppc; create procedure looppc() begin declare i int; declare m1 varchar(1000);...SET @m1 = "SELECT * FROM `zjxx_exampeople` WHERE 1=1 ";... prepare stm
  • SQL Server 存储过程SQL语句的拼接

    千次阅读 2020-12-26 17:11:27
    SQL Server 存储过程SQL语句的拼接
  • Sql字符拼接sql语句动态执行

    千次阅读 2019-07-18 09:07:54
    为了再开发过程中运用存储过程能够更加灵活可以试着使用拼接sql语句,动态的执行sql语句,最关键的是使用数据库的关键函数sp_executesql。 首先声明一个参数: declare @SQLWhere nvarchar(3250) 然后给参数...
  • ALTER PROCEDURE [dbo].[Proc_CaseRemark_ADD] @RecordID bigint, @CaseId nvarchar(20), @Remark nvarchar(1000), @IDCardNo nvarchar(50), @CreateUser nvarchar(20), @MeMoType int, @IsUse nvarchar(2), ...
  • 之前项目中写的一个大的存储过程 中间用到的SQL字符串拼接的方法 来完成业务的流程 类似SQL的动态拼接把 为什么要有用到这种形式 因为我这个存储过程里面要处理 至少三个系统的六种情况 所以使用拼接的方式是最...
  • 直接上代码吧,根据不同的条件拼写sql并执行 ALTER PROCEDURE [dbo].[usp_Statistic_WJB_DZSK_ZT] ( @year int, @half int,--0表示全年,1表示上半年,2下半年 @isAll int --0表示只统计党政干部人员,1...
  • Mysql存储过程动态拼接sql语句

    千次阅读 2018-04-19 17:22:28
    刚接触存储过程,现在的需求是这样的:有一个表需要我更新其中的某些字段,但是表里面的字段太多了,而且下次再更新也不确定是哪些字段要批量更新,所以就需要动态创建一个update语句来完成这个工作。 存储过程无疑...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,122
精华内容 14,848
关键字:

存储过程拼接sql并执行