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

sqldeclare多個變數

發布時間: 2022-05-15 07:36:39

A. 關於在sql中使用多個變數的問題

你的參數是char類型的 估計要加引號

exec 查詢帳套 @tenance='a',@itemname='獎金'

先把過程里的exec(@sql)改成print @sql, 把結果在查詢分析器里運行一下 看行不行

B. sql中declare是什麼意思

前面的是參數,是調用這個存儲過程的時候從外部輸入進來的.
declare 是聲明變數.
比如說,
這個存儲過程是,只要你把學號輸入進來,
就能查詢這個學生的班級.
那麼在這個存儲過程裡面,學號就是參數.
你給什麼學號,它就返回給你相應的班級.
又或者你也可以做成,只要你輸入學號,這個存儲過程就會將這個學生刪除.
反正就是這個意思,是很基礎的東西,建議你還是看看書把~

C. SQL server 中 關於@和declare的解釋,請看詳細

1.SQL server使用declare來聲明局部變數。

語法:DECLARE @local_variable data_type

其中,local_variable為局部變數的名稱,data_type為數據類型。

2.SQL server中的變數前面都要加@。

其中,局部變數以一個@符號開頭,全局變數以兩個@@符號開頭(如:@@ERROR)。

3.@可以看作局部變數的一個標志,是一種規定,不可以去掉的。

上圖是declare一個簡單應用的例子。

(3)sqldeclare多個變數擴展閱讀:

1.用declare進行聲明的同時也可對變數賦初值,如:declare @id int = 3

2.SQL server中使用@@表示的全局變數,是系統預先定義的,我們寫的sql語句不能創建、修改這些變數的值,只能讀取。

D. 在orc資料庫中的PL/SQL 如何用declare 定義多個變數

declare
lv_prg_name VARCHAR2(100) DEFAULT NULL;
lv_retcode VARCHAR2(50) DEFAULT NULL;
lv_errmsg VARCHAR2(32767) DEFAULT NULL;
lv_message VARCHAR2(32767) DEFAULT NULL;
lv_sql_string VARCHAR2(32767) DEFAULT NULL;
lv_del_sql_str VARCHAR2(32767) DEFAULT NULL;
lv_inst_sql_str VARCHAR2(32767) DEFAULT NULL;
lv_input_param VARCHAR2(32767) DEFAULT NULL;
lv_query_log_sn VARCHAR2(32767) DEFAULT NULL;
lv_end_date VARCHAR2(21) DEFAULT NULL;
ld_end_date DATE DEFAULT NULL;
ld_sysdate DATE DEFAULT NULL;
ln_log_sn NUMBER DEFAULT - 1;
ln_step NUMBER DEFAULT 0;
lb_commit_enable BOOLEAN DEFAULT TRUE;

E. SQL變數後面賦值多個的問題

那你這樣賦值的話,goodsid要等於多少呢?
你賦值錯了。
那你就要讓goodsid獲得值,外面傳遞過來的值,你這個應該是前台調用的存儲過程吧,你讓前台傳遞一個值過來就可以了啊,不用自己寫。如果你是在sql查詢分析器中執行的話,execute
儲存過程名
@goodsid='values'
這樣就可以了

F. 請問什麼是SQL的DECLARE語句

使用一個DECLARE語句在一個批處理或超過100個進程的主體中聲明變數,並使用SET或SELECT語句分配變數。游標變數度可以用這個語句聲明,也可以與其他版本的游標相關語句一起使用。所有權重變數在聲明後初始化為NULL。

定義語句的方法:

1、先定義一個數組,該數組是一些數字,復制可以對應到id列中的數據表中。

G. sql中declare是什麼意思

DECLARE_SERIAL,DECLARE_SERIAL / IMPLEMENT_SERIAL 宏的技術詳解(轉) DECLARE_DYNAMIC表明的是支持類型信息。

DECLARE_SERIAL / IMPLEMENT_SERIAL 宏的技術詳解(轉) DECLARE_DYNAMIC表明的是支持類型信息, 有了這個宏,我們就可以判斷一個類究竟是什麼類,比如

class A;

class B:public A;

A a;

B b;

(7)sqldeclare多個變數擴展閱讀:

DECLARE_DYNCREATE是動態創建的意思,這個有點類似Com的類工廠。

它實際上是用類CRunTime class記錄了類的靜態創建函數的地址,這個特性在很多地方需要使用,就在下面說的DECLARE_SERIAL就是一個經典的例子。

動態創建主要用在 "我不知道要創建的對象就是是什麼類,但是我知道它肯定是從某個基類派生的"。

H. sql怎麼聲明 變數

聲明局部變數語法:DECLARE @variable_name DataType其中 variable_name為局部變數的名稱,DataType為數據類型。

給局部變數賦值有兩種方法:

1、SET @variable_name=value

2、SELECT @variable_name=value

兩者的區別:SET賦值語句一般用於賦給變數一個指定的常量,SELECT賦值語句一般用於從表中查詢出數據然後賦給變數。

例如:DECLARE @count int

SET @count=123

PRINT @count

全局變數:由於全局變數是系統定義的,我們這里只做舉例。

@@ERROR 最後一個T-SQL錯誤的錯誤號

@@IDENTITY 最後一次插入的標識值

@@LANGUAGE 當前使用的語言名稱

@@MAX_CONNECTIONS 可以創建的同時連接的最大數目

@@SERVERNAME 本地伺服器的名稱

@@VERSION SQL Server的版本信息

I. declare 在SQL中是什麼意思,怎麼用

變數是在批處理或過程的主體中用 DECLARE 語句聲明的,並用 SET 或 SELECT 語句賦值。游標變數可使用此語句聲明,並可用於其他與游標相關的語句。除非在聲明中提供值,否則聲明之後所有變數將初始化為 NULL。

主題鏈接圖標 Transact-SQL 語法約定
語法

DECLARE
{
{{ @local_variable [AS] data_type } | [ = value ] }
| { @cursor_variable_name CURSOR }
} [,...n]
| { @table_variable_name [AS] <table_type_definition> | <user-defined table type> }

<table_type_definition> ::=
TABLE ( { <column_definition> | <table_constraint> } [ ,... ]
)

<column_definition> ::=
column_name { scalar_data_type | AS computed_column_expression }
[ COLLATE collation_name ]
[ [ DEFAULT constant_expression ] | IDENTITY [ ( seed ,increment ) ] ]
[ ROWGUIDCOL ]
[ <column_constraint> ]

<column_constraint> ::=
{ [ NULL | NOT NULL ]
| [ PRIMARY KEY | UNIQUE ]
| CHECK ( logical_expression )
}

<table_constraint> ::=
{ { PRIMARY KEY | UNIQUE } ( column_name [ ,... ] )
| CHECK ( search_condition )
}

參數

@ local_variable

變數的名稱。變數名必須以 at 符 (@) 開頭。局部變數名稱必須符合標識符規則。

data_type

任何系統提供的公共語言運行時 (CLR) 用戶定義表類型或別名數據類型。變數的數據類型不能是 text、ntext 或 image。

有關系統數據類型的詳細信息,請參閱數據類型 (Transact-SQL)。有關 CLR 用戶定義類型或別名數據類型的詳細信息,請參閱 CREATE TYPE (Transact-SQL)。

= value

以內聯方式為變數賦值。值可以是常量或表達式,但它必須與變數聲明類型匹配,或者可隱式轉換為該類型。

@ cursor_variable_name

游標變數的名稱。游標變數名稱必須以 at 符 (@) 開頭,並符合有關標識符的規則。

CURSOR

指定變數是局部游標變數。

@ table_variable_name

table 類型的變數的名稱。變數名稱必須以 at 符 (@) 開頭,並符合有關標識符的規則。

<table_type_definition>

定義 table 數據類型。表聲明包括列定義、名稱、數據類型和約束。允許的約束類型只包括 PRIMARY KEY、UNIQUE、NULL 和 CHECK。如果類型綁定了規則或默認定義,則不能將別名數據類型用作列標量數據類型。

<table_type_definition> 是在 CREATE TABLE 中用於定義表的信息子集。其中包含了元素和主要定義。有關詳細信息,請參閱 CREATE TABLE (Transact-SQL)。

n

指示可以指定多個變數並對變數賦值的佔位符。聲明 table 變數時,table 變數必須是 DECLARE 語句中聲明的唯一變數。

column_name

表中的列的名稱。

scalar_data_type

指定列是標量數據類型。

computed_column_expression

定義計算列值的表達式。計算列由同一表中的其他列通過表達式計算而得。例如,計算列可以定義為 cost AS price * qty。表達式可以是非計算列名稱、常量、內置函數、變數,也可以是用一個或多個運算符連接的上述元素的任意組合。表達式不能為子查詢或用戶定義函數。表達式不能引用 CLR 用戶定義類型。

[ COLLATE collation_name ]

指定列的排序規則。collation_name 可以是 Windows 排序規則名稱或 SQL 排序規則名稱,並且只適用於 char、varchar、text、nchar、nvarchar 和 ntext 數據類型的列。如果未指定,則該列的排序規則是用戶定義數據類型的排序規則(如果列為用戶定義數據類型)或當前資料庫的排序規則。

有關 Windows 排序規則名稱和 SQL 排序規則名稱的詳細信息,請參閱 COLLATE (Transact-SQL)。

DEFAULT

如果在插入過程中未顯式提供值,則指定為列提供的值。DEFAULT 定義可適用於除定義為 timestamp 或帶 IDENTITY 屬性的列以外的任何列。刪除表時,將刪除 DEFAULT 定義。只有常量值(如字元串)、系統函數(如 SYSTEM_USER())或 NULL 可用作默認參數。為了與 SQL Server 的早期版本兼容,可以為 DEFAULT 分配約束名稱。

constant_expression

用作列的默認值的常量、NULL 或系統函數。

IDENTITY

指示新列是標識列。在表中添加新行時,SQL Server 將為列提供一個唯一的增量值。標識列通常與 PRIMARY KEY 約束一起用作表的唯一行標識符。可以將 IDENTITY 屬性分配給 tinyint、smallint、int、decimal(p,0) 或 numeric(p,0) 列。每個表只能創建一個標識列。不能對標識列使用綁定默認值和 DEFAULT 約束。必須同時指定種子和增量,或者都不指定。如果二者都未指定,則取默認值 (1,1)。

seed

是裝入表的第一行所使用的值。

increment

添加到以前裝載的列標識值的增量值。

ROWGUIDCOL

指示新列是行的全局唯一標識符列。對於每個表,只能將其中的一個 uniqueidentifier 列指定為 ROWGUIDCOL 列。ROWGUIDCOL 屬性只能分配給 uniqueidentifier 列。

NULL | NOT NULL

決定在列中是否允許 Null 值的關鍵字。

PRIMARY KEY

通過唯一索引對給定的一列或多列強制實現實體完整性的約束。每個表只能創建一個 PRIMARY KEY 約束。

UNIQUE

通過唯一索引為給定的一列或多列提供實體完整性的約束。一個表可以有多個 UNIQUE 約束。

CHECK

一個約束,該約束通過限制可輸入一列或多列中的可能值來強制實現域完整性。

logical_expression

返回 TRUE 或 FALSE 的邏輯表達式。

<<user-defined table type>>

指定變數是用戶定義表類型。

備注

變數常用在批處理或過程中,作為 WHILE、LOOP 或 IF...ELSE 塊的計數器。

變數只能用在表達式中,不能代替對象名或關鍵字。若要構造動態 SQL 語句,請使用 EXECUTE。

局部變數的作用域是其被聲明時所在批處理。

當前分配有游標的游標變數可在下列語句中作為源引用:

* CLOSE 語句。
* DEALLOCATE 語句。
* FETCH 語句。
* OPEN 語句。
* 定位的 DELETE 或 UPDATE 語句。
* SET CURSOR 變數語句(在右側)。

在所有上述語句中,如果存在被引用的游標變數,但是不具有當前分配給它的游標,那麼 SQL Server 將引發錯誤。如果不存在被引用的游標變數,SQL Server 將引發與其他類型的未聲明變數引發的錯誤相同的錯誤。

游標變數:

* 可以是游標類型或其他游標變數的目標。有關詳細信息,請參閱 SET @local_variable (Transact-SQL)。
* 如果當前沒有給游標變數分配游標,則可在 EXECUTE 語句中作為輸出遊標參數的目標引用。
* 應被看作是指向游標的指針。有關游標變數的詳細信息,請參閱 Transact-SQL 游標。

示例
A. 使用 DECLARE

下例將使用名為 @find 的局部變數檢索所有姓氏以 Man 開頭的聯系人信息。
復制代碼

USE AdventureWorks;
GO
DECLARE @find varchar(30);
/* Also allowed:
DECLARE @find varchar(30) = 'Man%';
*/
SET @find = 'Man%';
SELECT LastName, FirstName, Phone
FROM Person.Contact
WHERE LastName LIKE @find;

下面是結果集:
復制代碼

LastName FirstName Phone
-------------------------------------------------- -------------------------------------------------- -------------------------
Manchepalli Ajay 1 (11) 500 555-0174
Manek Parul 1 (11) 500 555-0146
Manzanares Tomas 1 (11) 500 555-0178
(3 row(s) affected)

B. 在 DECLARE 中使用兩個變數

下例將檢索北美銷售區中年銷售額至少為 $2,000,000 的 Adventure Works Cycles 銷售代表的名字。
復制代碼

USE AdventureWorks;
GO
SET NOCOUNT ON;
GO
DECLARE @Group nvarchar(50), @Sales money;
SET @Group = N'North America';
SET @Sales = 2000000;
SET NOCOUNT OFF;
SELECT FirstName, LastName, SalesYTD
FROM Sales.vSalesPerson
WHERE TerritoryGroup = @Group and SalesYTD >= @Sales;

C. 聲明一個表類型的變數

下例將創建一個 table 變數,用於儲存 UPDATE 語句的 OUTPUT 子句中指定的值。在它後面的兩個 SELECT 語句返回 @MyTableVar 中的值以及 Employee 表中更新操作的結果。請注意,INSERTED.ModifiedDate 列中的結果與 Employee 表的 ModifiedDate 列中的值不同。這是因為對 Employee 表定義了 AFTER UPDATE 觸發器,該觸發器可以將 ModifiedDate 的值更新為當前日期。不過,從 OUTPUT 返回的列將反映觸發器激發之前的數據。有關詳細信息,請參閱 OUTPUT 子句 (Transact-SQL)。
復制代碼

USE AdventureWorks;
GO
DECLARE @MyTableVar table(
EmpID int NOT NULL,
OldVacationHours int,
NewVacationHours int,
ModifiedDate datetime);
UPDATE TOP (10) HumanResources.Employee
SET VacationHours = VacationHours * 1.25
OUTPUT INSERTED.EmployeeID,
DELETED.VacationHours,
INSERTED.VacationHours,
INSERTED.ModifiedDate
INTO @MyTableVar;
--Display the result set of the table variable.
SELECT EmpID, OldVacationHours, NewVacationHours, ModifiedDate
FROM @MyTableVar;
GO
--Display the result set of the table.
--Note that ModifiedDate reflects the value generated by an
--AFTER UPDATE trigger.
SELECT TOP (10) EmployeeID, VacationHours, ModifiedDate
FROM HumanResources.Employee;
GO

D. 聲明一個用戶定義表類型的變數

下例將創建一個名為 @LocationTVP 的表值參數或表變數。這需要使用一個相應的名為 LocationTableType 的用戶定義表類型。有關如何創建用戶定義表類型的詳細信息,請參閱 CREATE TYPE (Transact-SQL)。有關表值參數的詳細信息,請參閱表值參數(資料庫引擎)。
復制代碼

DECLARE @LocationTVP
AS LocationTableType;

J. SQL中什麼時候要用declare聲明變數

像這種問題,基本上沒有為啥...
淺顯點:就是 人家開發SQL Server的時候,為了更加讓編譯器更加方便的識別用戶輸入的代碼.
就規定,如果是定義變數 那麼 必須要使用 DECLARE 關鍵字.
那編譯器就很容易的知道. DECLARE 空格後面的第一個字元串就是變數名了.