当前位置:首页 » 编程语言 » 动态拼接sql函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

动态拼接sql函数

发布时间: 2022-09-19 06:54:58

1. pb 数据窗口中的 setsqlselect() 函数

setsqlselect() 函数:
获取数据窗口的select语法。
定义一个字符变量:
string ls_sql
ls_sql = dw_1.getsqlselect()
用来拼接查询条件,这样可以不使用参数的形式动态拼接查询条件来查询。
要配合setsqlselect()函数一起使用。
先get出来,然后对ls_sql进行加工修改后,再dw_1.setsqlselect()重新给回去,那么这个dw_1的后台语法就改变了,直接dw_1.retrieve(),就能按照新语法取值了。
这个修改的时候,只能修改where条件order by等。列的名字和个数,顺序,都不能做任何改动。

2. sql字符串连接函数

MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CONCAT()只允许两个参数;
换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。
来看几个例子。假设我们有以下的表格:
Geography 表格
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
例子1:
MySQL/Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';
结果:
'EastBoston'
例子2:
Oracle:
SELECT region_name || ' ' || store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'
例子3:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'

3. oracle怎么创建动态sql(急)

通过”execute immediate sql“命令来实现。
第一步:创建可执行字符串“var sql:='select * form tablename' ”。
第二步:执行sql“execute immediate sql”。意思就是马上执行sql语句。

4. mybatis中如何动态拼接sql函数(注:例如find_in_set函数,其参数是一个数值型数组)

mybatis中拼接SQL参数用#{}
拼接可执行的函数的参数需要使用${}输出参数.

5. mysql中字符串的拼接,能不能不使用concat函数

能使用。
MySQL concat函数可以连接一个或者多个字符串,如
select concat('10');
结果:10
select concat('11','22','33');
结果
112233
MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
select concat('11','22',null);
结果
NULL

6. 执行动态SQL语句的函数怎么写

执行动态SQL语句的函数怎么写
其实你这你都知道用函数实现不了的,因为你的输入参数@SQL是动态的,那必须用exec执行,而函数里不能用exec。建议你用存储过程实现,示例如下:

创建存储过程:
create procere TEST
(
@SQL NVARCHAR(200),
@RE INT output
)
AS
BEGIN
set nocount on
if exists (select * from tempdb.dbo.sysobjects where xtype='U' and id=object_id('#test'))
drop table #test

create table #test(total int)
insert into #test
exec (@SQL)
select @RE=isnull(total,0) from #test
set nocount off
END

调用示例:
declare @RE int
exec TEST 'select 1+1',@RE output
PRINT @RE

结果:
2

7. C语言环境下如何使用动态SQL

你真是牛人呀。数据库类型那么多,有oraclemysqlDB2SQLSQLsevera。你使用的那种。

相对于来说我使用oracle多。

给你一个pro*c的操作实例吧

/ 定义符号常数
#define USERNAME "SCOTT"
#define PASSWORD "x"
#include <stdio.h>
// 说明SQLCA和ORACA
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE ORACA;
// 启用ORACLE通讯区:ORACA=YES,使它能被使用
EXEC ORACLE OPTION (ORACA=YES);
// 说明SQL变量
EXEC SQL BEGIN DECLARE SECTION;
char* username=USERNAME;
char* password=PASSWORD;
VARCHAR sqlstmt[80];
int emp_number;
VARCHAR emp_name[15];
VARCHAR job[50],job1[50],job2[50];
float salary;
EXEC SQL END DECLARE SECTION;
main()
{
EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
// 发生错误时,保存SQL语句至ORACA
oraca.orastxtf=ORASTFERR;
// 登录到ORACLE
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf("/nConnect to ORACLE./n");
// 构造动态SQL语句
sqlstmt.len=sprintf(sqlstmt.arr,"INSERT INTO EMP(EMPNO,ENAME,JOB,SAL)VALUES(:V1,:V2,:V3,:V4)");
// 显示SQL语句
puts(sqlstmt.arr);
// 用PREPARE语句分析当前的动态INSERT语句,语句名是S
EXEC SQL PREPARE S FROM :sqlstmt;
// 循环插表
for(;;)
{
printf("/nEnter employee number:");
scanf("%d",&emp_number);
if(emp_number==0)break;
printf("/nEnter employee name:");
scanf("%s",&emp_name.arr);
emp_name.len=strlen(emp_name.arr);
printf("/nEnter employee job:");
scanf("%s",&job.arr);
job.len=strlen(job.arr);
salary = 0; // With VC6, Missing this line will cause C Run-Time Error R6002.
printf("/nEnter salary:");
scanf("%f",&salary);
EXEC SQL EXECUTE S USING :emp_number,:emp_name,:job,:salary;
}

// 提交事务,退出ORACLE
EXEC SQL COMMIT RELEASE;
printf("/nHave a good day!/n");
exit(0);
sqlerror:
// 打印错误信息
printf("/n%.*s/n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
// 打印出错SQL语句
printf("/n/"%.*s.../"/n",oraca.orastxt.orastxtl,oraca.orastxt.orastxtc);
// 打印出错SQL语句所在行号及所在文件名
printf("on line %d of %.*s/n/n",oraca.oraslnr,
oraca.orasfnm.orasfnml,oraca.orasfnm.orasfnmc);

// 回滚事务,退出ORACLE
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK RELEASE;
exit(1);
}

8. 取出函数中执行动态sql语句的结果

这还不简单,print之前先用另一个变量来取函数fgetD所得的值,然后用拼接字符串的方法拼接上去,例如你定义了
declare @a nvarchar(20)
set @a=dbo.fgetD(‘100’)
declare @b nvarchar(20)
set @b=dbo.fgetC(‘1011’)
declare @c nvarchar(20)
set @c=dbo.fgetM(‘10’)
set @caaa='select '+@a+' 时间 ,'+@b+' 倒置,'+@c+' 随机数'....
后面知道该怎么写了吧

9. SQL 函数 将一列拼接字符串

意思是单独一列数据,然后拼成一行数据
1,比如一列中有三行,分别是“天”“地”“人”。现在想得到一行数据“天地人”,
2,那么方法就是for
xml
path,具体的写法要根据实际情况来写,这里只能说利用这个方法,到底怎么写就要根据字段具体写了。
3,要知道具体使用方法只要在上搜索:sqlserver
for
xml
path,就可以得到很多提示,

10. mysql存储过程动态拼接sql时能用函数吗

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