❶ sql在 SQL 的查詢中, Where 欄位名='參數' 中的參數是篩選條件,
php是mysql_query("show
table_name",$con);
table_name是表名,$con是資料庫鏈接對象。
❷ SQL查詢時為什麼會 把欄位名當參數了啊
Microsoft JET Database Engine 錯誤分析
Microsoft JET Database Engine 錯誤 '80040e10'
至少一個參數沒有被指定值。 分析原因,很簡單的原因。資料庫中的欄位與你程序中的欄位不一樣。
比如
select * fromtest where aaa
而在資料庫中不存在這個欄位,就會這種問題
============================================
你檢查下 order 後的欄位名是不是正確
❸ sql資料庫列名是關鍵字時怎麼辦
用exec()方法實現,比如@表名、@欄位名是存儲過程的兩個參數,則可以這樣查詢數據:exec("select
"+@列名+"
from
"+@表名)
❹ sql存儲過程中能否用自定義參數代替列名進行判斷
不能,只能把整條SQL語句變成字元串,再利用命令執行該字元串,在oracle中執行命令是 execute immediate 字元串
❺ SQL里的游標是什麼如何將表名,列名,還有查詢條件作為參數傳進存儲過程,要有代碼和說明
create proc spname
@pctable varchar(20),--表名
@pccol varchar(20)--列名
as
begin
exec('select ' + @pccol + ' from ' + @pctable) --演示根據參數查詢
/*游標演示
declare @ctemp int
declare cc cursor for select id from table --定義table的id列作為游標
open cc --打開游標
fetch next from cc into @ctemp --游標賦給變數
while @@fetch_status = 0 --如果游標存在
begin
print @ctemp
fetch next from cc into @ctemp --跳到下個游標
end
close cc --關閉游標
deallocate cc --釋放游標
*/
end
----------------------------
declare cc cursor for select id from table --定義table的id列作為游標
open cc --打開游標
fetch next from cc into @ctemp --游標賦給變數
對於上面三句話的舉例:
假設有表table,內容如下:
id name
1 張三
2 李四
3 王五
4 趙六
那麼:declare cc cursor for select id from table --把table的第一列id定義為游標(cc)
定義了以後,游標存在了,但是為空。所以把第一行的id賦給cc。
fetch next from cc into @ctemp 相當於 @ctemp = next from cc = 1
然後begin和end中間的fetch next from cc into @ctemp
是用於,我已經執行完對第一個游標的操作了,接下來要跳轉到下一個游標.
fetch next from cc into @ctemp 相當於 @ctemp = next from cc = 2
你做過for循環嗎?做過就很容易理解了.
int i; //這一句相當於declare cc cursor
for (i = 0; i < table行數; i++) //i++ 相當於begin和end中的fetch next from cc into @ctemp
{}
❻ sql函數如何把欄位當作參數
select * from b where b.no in (select a.no from a where a.id=b.id)
❼ sql通過列名取值
先拼個sql語句,把列用變數表示 ,然後使用 sp_executesql 執行這個sql語句
如:
DECLARE @clums nVARCHAR(50)
SET @clums='Age'
DECLARE @sql nVARCHAR(1000)
SET @sql=N'select '+@clums+' from TableName '
EXEC sp_executesql @sql
@clums 是你通過存儲過程傳過來的參數,它的值可以是Age,Sex,Class任何一個,也是可以多個,如
@clums='Age,Sex'
❽ sql資料庫參數是表名或列名怎麼辦
或者用sp_executesql可能更好些
❾ Sql 語句。獲取指定表的列名
--isnull函數:需要個參數,如果第一個參數為空,則賦值第二個參數。
SELECT
--空格代表as關鍵字
( CASE WHEN a.colorder = 1 THEN d.name
ELSE ''
END ) 表名 ,
a.colorder 欄位序號 ,
a.name 欄位名 ,
( CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√'
ELSE ''
END ) 標識 ,
( CASE WHEN ( SELECT COUNT(*)
FROM sysobjects
WHERE ( name IN (
SELECT name
FROM sysindexes
WHERE ( id = a.id )
AND ( indid IN (
SELECT indid
FROM sysindexkeys
WHERE ( id = a.id )
AND ( colid IN (
SELECT
colid
FROM
syscolumns
WHERE
( id = a.id )
AND ( name = a.name ) ) ) ) ) ) )
AND ( xtype = 'PK' )
) > 0 THEN 'true'
ELSE 'false'
END ) 主鍵 ,
b.name 類型 ,
a.length 佔用位元組數 ,
COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 長度 ,
ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小數位數 ,
( CASE WHEN a.isnullable = 1 THEN 'true'
ELSE 'false'
END ) 允許空 ,
ISNULL(e.text, '') 默認值 ,
ISNULL(g.[value], '') AS 欄位說明
--a代表列集合表:為每個表和視圖中的每列返回一行,並為資料庫中的存儲過程的每個參數返回一行
--b代表列類型表:為資料庫中定義的每種系統提供的數據類型和每種用戶定義的數據類型返回一行。
FROM syscolumns a
LEFT JOIN systypes b ON a.xtype = b.xusertype
--d代表對象表:在資料庫中創建的每個對象(例如約束、默認值、日誌、規則以及存儲過程)都對應一行
INNER JOIN sysobjects d ON a.id = d.id
AND d.xtype = 'U'
AND d.name <> 'dtproperties'
--e代表e.text是默認值:包含資料庫中每個視圖、規則、默認值、觸發器、CHECK 約束、DEFAULT 約束和存儲過程的項
LEFT JOIN syscomments e ON a.cdefault = e.id
--g代表g.[value]是欄位說明:針對當前資料庫中的每個擴展屬性返回一行。
LEFT JOIN sys.extended_properties g ON a.id = g.major_id
AND a.colid = g.major_id
ORDER BY a.id ,
a.colorder
這個方法可以獲取當前庫存中所有表的所有列。希望對你有用。
❿ PL/SQL中 輸出列名和對應值。新手請教。
--很奇怪是下面from為什麼不能用參數tablename?會報錯
select colname into colValue from table1 where hashcode='';
這個from後面不能使用tablename參數很正常,因為你傳進來的tablename是一個字元串,而不是一張表,所以是無法將tablename直接這么放到from 後邊的 ,還有上面語句,colname本身是你從數據字典表中選到的變數名,也是一個字元型,相當於select '1' into colvalue from table1,這樣的colvalue結果一定是'1',而不是colname這個列對應的值。因為colname已經成了字元型了。
應該使用execute immediate來執行。
最終語法修改如下:
declare
tablename varchar2(100):='TABLE1';
colname varchar2(100);
colValue varchar2(500);
selectsql varchar2(200);
--返回表中所有列名
cursor cursor_colname is select column_name as cname from user_tab_columns where table_name=tablename;
begin
open cursor_colname;
LOOP
fetch cursor_colname into colname;
--很奇怪是下面from為什麼不能用參數tablename?會報錯
selectsql := ' select ' || colname || ' from ' || tablename || ' where hashcode = ''''';
execute immediate selectsql into colValue;
exit when cursor_colname%notfound;
dbms_output.put_line(colname||'='||colValue);
end loop;
close cursor_colname;
end;