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

sql通過函數傳入表欄位

發布時間: 2022-05-28 13:40:33

1. 如何用sql語句給表增加欄位

通用式: alter table [表名] add [欄位名] 欄位屬性 default 預設值 default 是可選參數
增加欄位: alter table [表名] add 欄位名 smallint default 0 增加數字欄位,整型,預設值為0
alter table [表名] add 欄位名 int default 0 增加數字欄位,長整型,預設值為0
alter table [表名] add 欄位名 single default 0 增加數字欄位,單精度型,預設值為0
alter table [表名] add 欄位名 double default 0 增加數字欄位,雙精度型,預設值為0
alter table [表名] add 欄位名 Tinyint default 0 增加數字欄位,位元組型,預設值為0
alter table [表名] add 欄位名 text [null] 增加備注型欄位,[null]可選參數

alter table [表名] add 欄位名 memo [null] 增加備注型欄位,[null]可選參數

alter table [表名] add 欄位名 varchar(N) [null] 增加變長文本型欄位大小為N(1~255)

alter table [表名] add 欄位名 char [null] 增加定長文本型欄位大小固定為255

alter table [表名] add 欄位名 Datetime default 函數增加日期型欄位,其中函數可以是now(),date()等,表示預設值

(上面都是最常用的,還有其他的屬性,可以參考下面的數據類型描述)

刪除欄位: alter table [表名] drop 欄位名

修改變長文本型欄位的大小:alter table [表名] alter 欄位名 varchar(N)

刪除表: drop table [表名]

創建表:

sql="CREATE TABLE [表名] ([欄位1,並設置為主鍵] int IDENTITY (1, 1) NOT NULL CONSTRAINT PrimaryKey PRIMARY KEY,"&

"[欄位2] varchar(50),"&

"[欄位3] single default 0,"&

"[欄位4] varchar(100) null,"&

"[欄位5] smallint default 0,"&

"[欄位6] int default 0,"&

"[欄位7] date default date(),"&

"[欄位8] int default 1)"

conn.execute sql

有null 的表示欄位允許零長

2. sql中寫function是否可以將表名作為參數傳入進行動態查詢

看情況。

如果你的function裡面,是固定的SELECT語句,只是想通過參數中更換表名的話,是不可以的。

如果你的function裡面,查詢的SQL是字元串拼接出來的,在function裡面通過EXEC或其他類似語句動態執行的話,這是沒有問題的。

3. sql中自定義的函數如何使用傳入的表名

不行的,因為sql 要檢查語法,它會把@tablename當成表名,而你沒這個名字的表,就報錯。

4. 在sql語句中,怎樣將參數做為表名傳遞到查詢語句中

今天為了提取出公共的fuction提高執行效率,需要傳遞表的欄位作為參數,語法可以通過,但是查詢結果不正確。
將表欄位參數換成實際的欄位就可以,問題出在如果將表名,欄位名做為參數傳遞到Sql Server中
create function backtoCount(@tablename varchar(50))
returns intasbegindeclare @count int
select @count=count(*) from @tablename
return @countend但是這樣的時候會報錯,說變數@tablename要聲明
對於表名作為變數,我們可以使用object_name(id)方法
create function backtoCount(@tablename varchar(50))
returns intasbegindeclare @count int
select @count=rows from sysindexes where indid in (0,1) and object_name(id)=@tablename
return @countendGO--查sysobjects表有多少行
select dbo.backtoCount( 'sysobjects ')
對於欄位變數的話,必須執行動態語句,但是函數里邊不能用exec,建議使用存儲過程實現。
解決方法:動態SQL
create procere f_count(@tablename varchar(50))asdeclare @str as varchar(1000)
set @str= 'select count(*) as a from

5. Sql 中如何在函數中傳遞表名參數

我查遍網路找不到,2020.06.28 18:45原創一個目前你能找到的唯一權宜之計:
因sql的函數本身不支持對實體表進行增、刪、改,所以對實體表進行的insert、update、delete均不可用、另外exec也被禁用了,因為動態表名和動態欄位值不會太多,所以想到寫枚舉解決。
--如果函數返回表為@ab table (a1 varchar(100), a2 varchar(100))
--如果表名為@tableName
if @tableName='表1'
insert into @ab select a1,a2 from 表1 where ...
if @tableName='表2'
insert into @ab select a1,a2 from 表2 where ...
如果有欄位名參數為@fieldName,欄位值參數@fieldValue
if @fieldName='a1'
delete from @ab where a1 not like '%' + @fieldValue + '%'
if @fieldName='a2'
delete from @ab where a2 not like '%' + @fieldValue + '%'
--對@ab的其它業務邏輯
...
return

6. sql怎樣把對字元串的函數應用在欄位上

不一定要用函數,可以用like,作用都一樣
where col1 like '%'+col2+'%'類似這樣的形式,如果有分隔符再拼接進去就行了

7. 在SQL Server 語句中,如何將參數做為表名傳遞到查詢語句中

可以使用動態sql來查詢。

如:

declare@tablenamevarchar(20)
declare@sqlnvarchar(2000)
set@tablename='users'
set@sql=N'select*from'+@tablename+''
execsp_executesql@sql

結果

說明:

1、動態sql一般是這樣傳遞參數:set @sql=N'select * from ' +@tablename+ ''

2、執行sql時以這種方式:exec sp_executesql @sql

3、定義動態sql變數時,要用nvarchar類型