sql 儲存過程變數賦值問題,SQL 儲存過程變數賦值問題

2022-03-08 23:37:17 字數 3801 閱讀 2915

1樓:我tm不管

declare @user varchar(1000)declare @motable varchar(20)

select @motable = 'mt_10'declare @sql nvarchar(4000) --定義變數,注意型別

set @sql='select @user = count(distinct userid) from '+@motable --為變數賦值

--執行@sql中的語句

exec sp_executesql @sql ,n'@user varchar(1000) out' --表示@sql中的語句包含了一個輸出引數

,@user out --和呼叫儲存過程差不多,指定輸出引數值print @user 本例中,@motable 為嵌入引數。

看看這個你就明白了

2樓:匿名使用者

declare @table varchar(1000)declare @sqlwhere varchar(500)declare @sql varchar(5000)set @table = 'workflow'

set @sqlwhere = 'datetime between ''2007-01-01'' and ''2010-01-01'''

set @sql=' declare @count varchar(20) select @count = count(*) from '+@table+ ' where '+@sqlwhere + 'print @count'

exec(@sql)

就你的問題,給你舉了個例子。你看下。

其實問題就出在你定義的值上。我這個是沒問題能執行的。

3樓:匿名使用者

sql server

通過 sp_executesql

的第2個引數來定義有哪些引數

輸出的加output

後面的引數為執行的時候,具體引數的資料。輸出的加output

下面是 例子** 與 執行結果:

1> begin

2> declare @sql nvarchar(200);

3> declare @name varchar(10);

4> set @sql = 'select @name = name from test_dysql where id=1';

5> print @sql;

6> exec sp_executesql @sql, n'@name varchar(10) output', @name output;

7> print @name;

8> end

9> go

select @name = name from test_dysql where id=1

a 更多關於 動態 sql 的例子,看下面這個帖子:

4樓:流香羽

declare @count int

--使用 declare 宣告sql變數

sql server 儲存過程中怎麼將變數賦值

5樓:匿名使用者

暈啊,你這個賦值辦法。。。哈哈哈哈。

select @companycode = comcode from t_company where comid = '000001'

如果是給變

量賦常量

select @companycode = 100 類似

6樓:匿名使用者

不用 into 的例子:

1>2>3> declare

4> @testvalue as varchar(20);

5> begin

6> set @testvalue = 'first test!';

7> print( @testvalue );

8> end;

9> go

first test!

7樓:匿名使用者

zhanghb_3722

怎麼可以複製別人的**來回答呢!當然,大家都是正確的

8樓:匿名使用者

lz 試試這個 把位置換換

select top 1 @引數=column from table where ...

9樓:

select @companycode = comcode from t_company where comid = '000001'

10樓:淳于建設汲媚

儲存過程裡參

數的預設值不能使用函式,所以不能在儲存過程裡直接把引數的預設值設定為當前系統時間,不過可以在儲存過程裡賦值。還有一點疑問,既然@myday是當前系統時間了,為什麼還要做成引數呢?

create

procedure

pro_test

@myday

char(10)

asset

@myday=convert(char(10),getdate(),21)

update

mytable

setstatus=1

where

day>@myday

go@myday不為引數時可以這麼寫

create

procedure

pro_test

asdeclare

@myday

char(10)

set@myday=convert(char(10),getdate(),21)

update

mytable

setstatus=1

where

day>@mydaygo

在sql server 2005儲存過程中如何給時間變數賦值?

11樓:

declare @starttime datetime --宣告變數

set @starttime =(select getdate())

select @starttime

12樓:匿名使用者

儲存過程裡引數的預設值不能使用函式,所以不能在儲存過程裡直接把引數的預設值設定為當前系統時間,不過可以在儲存過程裡賦值。還有一點疑問,既然@myday是當前系統時間了,為什麼還要做成引數呢?

create procedure pro_test

@myday char(10)

asset @myday=convert(char(10),getdate(),21)

update mytable set status = 1 where day>@myday

go@myday不為引數時可以這麼寫

create procedure pro_test

asdeclare @myday char(10)

set @myday=convert(char(10),getdate(),21)

update mytable set status = 1 where day>@mydaygo

13樓:我tm不管

如'2011-05-05'這樣的就可以

sql server 儲存過程中怎麼將變數賦值?

在sql儲存過程中如何宣告變數賦值變數最好有

sql server 儲存過程中怎麼將變數賦值 sql賦值語句 declare test1 int select test1 111 set test1 222 sql函式賦值,假定count 是自定義函式declare test2 int select test2 count from sys.s...

SQL儲存過程問題,請高手幫忙看一下

convert int,prodbrandid convert int,prodcategoryid 都錯了你是拼接的sql,sql是字串,你convert成int是不行的,應改成 convert varchar 8 prodbrandid convert varchar 8 prodcategor...

sql2019用儲存過程如何動態建立表

嗯,我試一下 create procedure create table con nvarchar 1000 as declare strsql nvarchar 4000 begin set strsql create table test con columns1 int,columns2 in...