當前位置:首頁 » 編程語言 » 動態拼接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函數了