當前位置:首頁 » 編程語言 » sql表變數使用
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql表變數使用

發布時間: 2022-10-22 06:40:05

A. sql表名 怎麼用 變數

你是在procere里用,還是在程序里用,你用的是什麼資料庫
一般用組串的方法都是可以把變數帶進去的,沒有問題

B. sql腳本怎麼使用變數

Sql中如何給變數賦值使用set關鍵字。
例表格tt結構如圖:

下面語句聲明一個@ii_test的整型變數,然後給變數賦值,並在SQL查詢中調用變數

C. mysql裡面是怎麼試用表變數的

mysql有臨時表:create temporary table if not exists {表定義}--關鍵字」temporary「指示mysql創建會話級別的臨時表。
臨時表只對當前會話可見,連接斷開時,自動刪除!
你不必擔心所創建的臨時表的名稱會和其他會話建立的臨時表、或非臨時表沖突!注意如果你的臨時表和正常表名稱相同,正常表會被隱藏——如同全局變數和局部變數那樣
創建臨時表不會引發通常的commit事務提交

使用臨時表的諸多限制
引擎類型只能是:memory(heap)、myisam、merge、innodb
不支持mysql cluster
同一個查詢語句中只能引用一次! 如 SELECT * FROM TP_TABLE , TP_TABLE AS ALIAS_NAME;是錯誤的

同一個用戶存儲函數中只能引用一次!
show tables 不會顯示臨時表
不能使用rename重命名臨時表。只能使用ALTER TABLE OLD_TP_TABLE_NAME RENAME NEW_TP_TABLE_NAME;
影響使用replication功能

mysql伺服器自動使用的內部臨時表
在某些情況下,mysql伺服器會自動創建內部臨時表:該臨時表可以是只存在於內存的memory臨時表,或者是存儲於硬碟的myisam臨時 表;而且 初始創建的memory臨時表由於表的增大 可能會轉變為myisam臨時表——其轉化臨界點由max_heap_table_size 和tmp_table_size系統變數的 較小值 決定的!注意:max_heap_table_size系統變數應用於所有的memory引擎的表,不管是用戶臨時表、正常表、或者內部臨時表。
內部臨時表的創建條件:
group by 和 order by中的列不相同
order by的列不是引用from 表列表中 的第一表
group by的列不是引用from 表列表中 的第一表
使用了sql_small_result選項
含有distinct 的 order by語句
初始創建內部myisam臨時表的條件:
表中存在text、blob列
在group by中的 列 有超過512位元組
在distinct查詢中的 列 有超過512位元組
在union、union all聯合查詢中,select 列 列表中的 列 有超過512位元組的
如何判斷某個查詢是否會產生內部臨時表:使用explain查看執行計劃,檢查extra列看是否使用臨時表「using temporary」

D. 表變數在動態sql里怎麼用

------解決方案--------------------
declare @table table(id int,name nvarchar(30))
insert into @table
select 1, 'a ' union all
select 2, 'b ' union all
select 3, 'c '

select * from @table

E. sql語句 表名用變數表示

如果你用的是php,所有的變數都可以寫成

{$xxx}

放在你的查詢語句里(注意要用雙引號)。

其他語言雷同。

其實sql查詢語句完全可以當成一個string來操作。

F. SQL Server 表變數和臨時表的區別

表變數是一種特殊的數據類型,用於存儲結果集以進行後續處理。table 主要用於臨時存儲一組作為表值函數的結果集返回的行。其作用域為一個語句批。臨時表有兩種類型:本地表和全局表。在與首次創建或引用表時相同的 SQL Server 實例連接期間,本地臨時表只對於創建者是可見的。當用戶與 SQL Server 實例斷開連接後,將刪除本地臨時表,所以局部臨時表的作用域為當前連接。全局臨時表在創建後對任何用戶和任何連接都是可見的,當引用該表的所有用戶都與 SQL Server 實例斷開連接後,將刪除全局臨時表,所以全局臨時表的作用域為所有連接。

G. oracle pl/sql中如何使用變數

定義並使用變數

PL/SQL有四種類型:標量類型,復合類型,引用類型 (reference),LOB(Large Obejct)類型

一、標量類型

最常用的就是標量類型,是指只能存放單個數值的變數,包括數字類型、字元類型、日期類型和布爾類型,每種類型又包含相應的子類型。

常量標量類型如下:

VARCHAR2 (n) , CHAR (n), NUMBER (p,s),DATE, TIMESTAMP , LONG , LONG RAW ,BOOLEAN,BINARY_INTEGER(僅 PL / SQL使用),BINARY_FLOAT和BINARY_DOUBLE(10g新引入的)

定義標量:

identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]

使用標量需要注意的是=號被:=取代,與delphi一樣的賦值符號@_@

例子:

v_name VARCHAR2 ( 10 );
v_rate CONSTANTS NUMBER ( 4 , 2 ) : = 3.04 ;

為了防止定義的變數類型與表中的欄位類型不一致,可以使用%TYPE來定義:

v_name employee.name % TYPE;

如上面所示,v_name的類型就與表 employee中的name欄位類型一樣!!

二、復合變數:

用於存放多個值的變數稱為復合變數,包括PL/SQL記錄,PL/SQL表,嵌套表和VARRAY四種類型

1.PL/SQL記錄

類似於C/C++中的結構概念:

declare
TYPE employee_record is RECORD(
id employee.id % TYPE,
name employee.name % TYPE,
email employee.email % TYPE);
em_record employee_record;
begin
select id,name,email into em_record from employee where name =& name;
dbms_output.put_line( ' 雇員名: ' || em_record.name || ' 雇員ID: ' || em_record.id);
end ;

2.PL/SQL表,類似於數組概念,不同的是PL/SQL表允許負值下標,而且沒有上下限,如:

declare
TYPE employee_table is table of employee.name % TYPE index by BINaRY_INTEGER;
em_table employee_table;
begin
select name into em_table( - 1 ) from employee where name =& name;
dbms_output.put_line( ' 雇員名: ' || em_table( - 1 ));
end ;

3.嵌套表,與PL/SQL 表相似,不同的是嵌套表可以做表列的數據類型,而PL/SQL表不能,使用嵌套表作為表列時,必須為其指定專門的存儲表,如:

create or replace TYPE emp_type as OBJECT(name VARCHAR2 ( 10 ),salary NUMBER ( 6 , 2 ),hiredate DATE);

CREATE OR REPLACE TYPE emp_array IS TABLE OF emp_type;

CREATE TABLE department(
deptno NUMBER ( 2 ),dname VARCHAR2 ( 10 ),
employee emp_array)NESTED TABLE employee STORE as employee_dept;

4.VARRAY(變長數組),與嵌套表相似,也可以做為表列的數據類型,但是嵌套表沒有個數限制,而VARRAY有個數限制,如:

CREATE TYPE TEST_ARRAY IS VARRAY(20) OF emp_type;

三、引用變數(reference)

類似於C++中的指針或者JAVA中引用的概念,用於存放數值指針的變數,使用此變數,可以使得應用程序共享相同對象,降低佔用空間。此類有兩種類型:游標(REF CURSOR)和對象類型(REF OBJECT)

1.REF CURSOR,定義時同時指定SELECT語句的游標稱為顯式或者靜態游標,在打開時才指定SELECT語句的游標稱為動態游標,如:

DECLARE
TYPE c1 IS REF CURSOR ;
emp_cursor c1;
v_name employee.name % TYPE;
v_sal employee.salary % TYPE;
begin
open emp_cursor for
SELECT name,salary FROM EMPLOYEE ;
LOOP
FETCH emp_cursor INTO v_name,v_sal;
EXIT WHEN emp_cursor % NOTFOUND;
dbms_output.put_line(v_name);
END LOOP;
close emp_cursor;
end ;

2.REF OBJECT,與JAVA的引用概念相同,存儲的是指向對象的指針

四、LOB類型

LOB類型是指用於存儲大批量數據的變數,包括內部的3種(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。
CLOB,NCLOB用於存儲大量的字元數據。
BLOB用於存儲大批量二進制數據(如圖象)。
BFILE則存儲指向OS文件的指針。

H. sql server 用變數定義表名,能夠查詢

sql server 中查詢使用變數定義表名,需要配合exec()來實現。


如圖中例子,使用 @char_table 接收 表名變數


SQL中:declare @ 定義變數,set 給變數賦值。exec()來執行動態SQL語句

I. sql insert語句中如何使用變數

sql insert語句中使用變數:

(insert)向表中添加一個新記錄,要使用SQL INSERT 語句。這里有一個如何使用這種語句的例子: INSERT mytable (mycolumn) VALUES (『some data') 這個語句把字元串'some data'插入表mytable的mycolumn欄位中。將要被插入數據的欄位的名字在第一個括弧中指定,實際的數據在第二個括弧中給出。

  1. INSERT 語句的完整句法如下:INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES |

    Values_list | select_statement}

  2. 如果一個表有多個欄位,通過把欄位名和欄位值用逗號隔開,可以向所有的欄位中插入數據。假設表mytable有三個欄位first_column,second_column,和third_column.下面的INSERT語句添加了一條三個欄位都有值的完整記錄:INSERT mytable (first_column,second_column,third_column)

    VALUES (『some data','some more data','yet more data')

  3. 可以使用INSERT語句向文本型欄位中插入數據。但是,如果需要輸入很長的字元串,應該使用WRITETEXT語句。

  4. 如果在INSERT 語句中只指定兩個欄位和數據。向一個表中插入一條新記錄,但有一個欄位沒有提供數據。在這種情況下,有下面的四種可能:

    1)如果該欄位有一個預設值,該值會被使用。例如,假設插入新記錄時沒有給欄位third_column提供數據,而這個欄位有一個預設值'some value'.在這種情況下,當新記錄建立時會插入值'some value'。

    2)如果該欄位可以接受空值,而且沒有預設值,則會被插入空值。

    3)如果該欄位不能接受空值,而且沒有預設值,就會出現錯誤。會收到錯誤信息:The column in table mytable may not be null.

    4)最後,如果該欄位是一個標識欄位,那麼它會自動產生一個新值。當向一個有標識欄位的表中插入新記錄時,只要忽略該欄位,標識欄位會給自己賦一個新值。

  5. 註:向一個有標識欄位的表中插入新記錄後,可以用SQL變數@@identity來訪問新記錄 的標識欄位的值。考慮如下的SQL語句:

    INSERT mytable (first_column) VALUES(『some value')

    INSERT anothertable(another_first,another_second)

    VALUES(@@identity,'some value')

  6. 如果表mytable有一個標識欄位,該欄位的值會被插入表anothertable的another_first欄位。這是因為變數@@identity總是保存最後一次插入標識欄位的值。

  7. 欄位another_first應該與欄位first_column有相同的數據類型。但是,欄位another_first不能是應該標識欄位。Another_first欄位用來保存欄位first_column的值。