存儲過程字元串變數
① oracle在寫存儲過程時怎樣將變數和字元串進行連接
變數直接寫,要連接字元串的話,用 || 這個符號,後面的字元串用單引號引!
例如 變數 V_str 字元串' select emp from table where '
連接後為:
------------------------------------------------
' select emp from table where '
|| V_str
------------------------------------------------
希望可以幫助到你!
② sql存儲過程 字元串問題
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
ALTER
PROCEDURE
[dbo].[Test]
--@PageIndex
int,
@table
varchar(200),
@Sqlwhere
varchar(50)
--@Sqlorder
varchar(50),
as
declare
@sql
varchar(8000)
--set
@PageSize
=
5
set
@sql='select
*
from
'+@table+'
where
'+@Sqlwhere+'
order
by
Employee_ID
DESC'
exec(@sql)
③ oracle 定義一個存儲過程,中間生成一個字元串存儲過程,該怎麼執行那個字元串存儲過程
是的
execute immediate sqlStr
但是你的ParastrSQL 拼接方式有問題
ParastrSQL := 'select count(*) as Total from [' + ParatblName + ']' +
' where ' + ParastrWhere;
改為
ParastrSQL := 'select count(*) as Total from ' ||ParatblName||'where'||ParastrWhere;
oracle中用||拼接字元串
④ SQL 執行存儲過程,字元串參數如何拼接
變數直接寫,要連接字元串的話,用 || 這個符號,後面的字元串用單引號引!
例如 變數 V_str 字元串' select emp from table where '
連接後為:
------------------------------------------------
' select emp from table where '
|| V_str
------------------------------------------------
希望可以幫助到你!
⑤ 存儲過程中可以將一段字元串直接當成變數傳進sql裡面嗎
這種想法是可以實現的,就是在存儲過程里使用SQL語句進行拼接,方法具體就是:1.定義時設置字元參數(例如Input_sql INVARCHAR2),2. VC_SQL:='SELECT*FROM TABLE_A'||Input_sql;就可以實現你的需求
但是這里個人建議,最好不要使用這種方法,因為這種做法實在欠妥當,不能把欄位名作為參數,至於為什麼建議你可以看看一些資料庫資料,這里建議使用欄位的定值作為參數,比如你提出的100和10000。這是個人的一些想法,希望對你有所幫助。
⑥ mysql存儲過程中like子句字元串變數怎麼用
試試 like concat('%',@word,'%')
如果有幫助到你,請點擊採納
⑦ 如下例存儲過程,我想引入一個字元串變數a,然後從資料庫查詢,但是運行後結果集卻是資料庫的所有記錄,
可能代碼是正確的,只是你的數據就是全部符合條件。
報錯信息截圖上來,或者在查詢器中直接運行一下:
SELECT *
FROM 'table'
⑧ 存儲過程如何 解析字元串
方法:
1.創建split函數(轉)
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--實現split功能 的函數
--date :2005-4-20
--Author :Domino
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end
用法:select * from dbo.f_split('A:B:C:D:E',':')
2.存儲過程
CREATE PROCEDURE InsertRecord
@Qstring varchar(50),
AS
insert into names(name1,name2,name3,name4) values
(select * from dbo.f_split(@Qstring,',')
3.調用存儲過程
⑨ sql server 存儲過程 表變數名無法用在查詢字元串中
要注意一點:用execute執行的動態SQL中是無法直接使用外部所定義的變數的(就好像執行動態SQL內與外是兩個不同的會話。用存儲過程sp_executesql倒是可以傳遞其他標量類型的參數,但是也無法傳遞表變數)。而你要實現的功能是在執行動態SQL之前,已經把數據查詢到一個表變數中了,然後要在動態SQL中再查詢此表變數,目前來說是不能實現的。
可以使用臨時表,或者游標,這兩個可以在動態SQL中保持有效狀態。
使用游標的示例如下:
declare@tbtable(usernamenvarchar(20))
insertinto@tb
select'Andy'
union
select'Jack'
declarecurcursorfor
selecttop10usernamefrom@tb
declare@sqlnvarchar(1000),@usernamenvarchar(20)
set@sql='opencur
fetchnextfromcur
into@v_user_name'
executesp_executesql@sql,N'@v_user_namenvarchar(20)output',@usernameout
closecur
deallocatecur
select@username
而對於你的要在動態SQL中執行select語句,直接使用臨時表會比較方便些。
⑩ 存儲過程里變數怎麼轉換成字元串
字元型轉浮點型用atof
或者strtod(後者安全點),它的默認類型是double型。
用法:比方說你定義了CString的對象str,要想轉換為浮點型可以定義一個浮點型變數例如double
a
=
atof(str)就可以了